web-dev-qa-db-ja.com

ssh公開鍵認証が同時パスワード認証接続でのみ機能するのはなぜですか

Openssh-serverを使用してVanillaubuntu lucid(10.04)システムをセットアップしました。公開鍵認証を設定しようとしていますが、最初にパスワード認証を使用して接続し、そのセッションを開いたままにした場合にのみ機能します。すべての新しい同時セッションは公開鍵で機能します。

サーバー側のホームディレクトリに正しいアクセス許可が設定されていることを確認するために、すべての手順を実行しました。

chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

クライアント側のRSA2048ビット公開鍵がauthorized_keysファイルに追加されます(1行のみ)。私のRSAキーにも空白のパスフレーズがあります。

私はこれを引き起こす可能性があるものについて困惑しています。私はそれが私のサーバー構成と何かでなければならないことを知っています。構成が「十分」に安全でない場合、公開鍵認証が許可されないと聞いていますが、それが何であるかについて混乱しています。

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile    %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need Host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

残りはデフォルトです。 PublicKeyは機能しますが、最初のセッションでは機能しません。

前もって感謝します!

2
Nathan

暗号化されたホームディレクトリがある場合、UbuntuがEcryptFSでそれを行う方法は、それがあなたが経験していることを説明するでしょう。最初のパスワード付きログインを行った後、最初の〜/ .ssh/authorized_keysが使用可能になります。

Sshキーによる直接ログインを許可する1つの方法は、ホームディレクトリの外部で特定のAuthorizedKeysFileを実行することです。これは、パスで%h(ホームディレクトリ)の代わりに%u(ユーザー)を使用して実行できます。もう1つのオプションは、〜/ .ssh/authorized_keysのコピーをホームディレクトリの「マウントされていない」バージョンに配置することです。それがEcryptFSマウントの下にあるものです。

しかし、これらのソリューションのどれが実際にどれだけ優れているかはわかりません。通常のホームディレクトリにアクセスするには、パスワードを使用してログインする必要があります(種類)。これは、EcryptFSホームディレクトリをマウント/復号化するために必要なパスフレーズをアンラップするために使用されるユーザーパスワードです。はい、手動でマウント/復号化することもできますが、それはほとんど別の質問のようです。

3
andol

クライアント側でControlMaster/ControlPathを設定して、後続の接続で接続を再利用できるように設定しているため、パスワード認証でログに記録すると機能すると思います。

LogLevelをDEBUG3に設定し、ログ(/var/log/auth.log)を掘って何が起こっているかを確認することにより、サーバー側でログレベルを上げてみてください。

クライアント側で-vvvをsshコマンドラインに追加して、クライアントが使用しているキーを確認します。

両方の情報を使用して、何が起こっているのかを理解できるはずです。

1
hellvinz

Authorized_keysファイルは.sshフォルダーにある必要があり、644個のアクセス許可が必要です。

0
wolfgangsz

cp〜/.ssh/authorized_keys/etc /ウォーターズキー

/ etc/ssh/sshd_configを変更します

AuthorizedKeysFile/etc/authorized_keys

sshdをリロードします/etc/init.d/sshrestart

0
user58554