クラウドで実行されているUbuntuサーバーがあります。ユーザーを作成しました(git
)。フォルダ/home/git
に、.ssh/
ディレクトリとauthorized_keys
ファイルを作成しました。
しかし、SSH公開キーをauthorized_keys
ファイルに入れると、サーバーは引き続きパスワードを要求します。
私は何を間違えましたか?
クラウドで実行されているUbuntuサーバーがあります。ユーザーを作成しました(git
)。フォルダ/home/git
に、.ssh/
ディレクトリとauthorized_keys
ファイルを作成しました。
しかし、SSH公開キーをauthorized_keys
ファイルに入れると、サーバーは引き続きパスワードを要求します。
私は何を間違えましたか?
回答:
サーバー側では、sshデーモンがエラーをログに記録する/var/log/auth.log
ため、そのファイルをチェックして、報告されている内容を確認します。
クライアント側から、接続を確立するときに-v
フラグ(または-vv
または-vvv
)を追加して、冗長性を高めることができます。この方法で問題を特定できる場合があります。
その他の確認事項を次に示します。
/home/git/.ssh/authorized_keys
がに所有されていることを確認してくださいgit
。/home/git/.ssh/authorized_keys
モードが600(-rw-------
)であることを確認してください。/etc/ssh/sshd_config
ファイルも確認してください。
PubkeyAuthentication
に設定する必要があります yes
AuthorizedKeysFile
許可されたキーを配置するパスを決定するディレクティブもあります。コメントアウトされているか、デフォルトのを確認してください%h/.ssh/authorized_keys
。/var/log/auth.log
ファイルが表示されない場合はどうしますか?これをオンにする方法はありますか?
sudo service ssh restart
また、ユーザーのホームディレクトリ(この場合は、/ home / git)が自分だけが書き込み可能であることを確認してください。ホームディレクトリがグループ書き込み可能であるため、一度この問題が発生しました。/var/log/auth.logには、「認証は拒否されました:ディレクトリ/ home / chuckの所有権またはモードが正しくありません」とあります。(これは、あなた以外の誰かがいじっていたauthorized_keysファイルを使用しないようにするためです!)
これを解決するにはさまざまな方法があります。パスワード認証を使用しないようにsshd
(サーバー側)またはssh
(クライアント側)を構成できます。サーバーでパスワード認証を無効にすると、サーバーのセキュリティが強化されますが、キーを紛失すると問題が発生します。
ssh
pubkey認証を使用して(クライアント側)を作成するには、ssh
コマンドにいくつかのオプションを追加します。
ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server
これが機能する場合PasswordAuthentication=no
は、/etc/ssh/ssh_config
システム全体または~/.ssh/config
ユーザー固有のsshクライアント構成ファイルでオプションを永続的に設定できます(詳細については、を参照してくださいman ssh_config
)。
/etc/ssh/ssh_config
、Debian / Ubuntuシステム上のすべてのSSHクライアント設定()は、冗長モードで呼び出したときにわかるように PubkeyAuthentication
、すでに優先して試してみてssh
ください。
ホームフォルダーが暗号化されている場合、authorized_keys
ログイン前にファイルを読み取ることはできません。あなたの家の外に移動する必要があります。
以下に説明とその方法を示します。https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting
もう1つ確認する必要があるのは、公開キーに余分な改行があるかどうかです。上記のアドバイスに従って/var/log/auth.logを確認しましたが、キーを読み取るときにエラーが発生しました。キーは4行ではなく約2行でした。キーに余分な改行が埋め込まれていました。
viエディターを使用する場合、shift-jを使用して行を結合し、キー文字列の余分なスペースを消去します。
sshd_config
。頭を壁に30分ぶつけた。これは私の間違いでした!どういうわけか、私が手で編集するすべてのファイルを余分な改行で終わらせる習慣になりました。最後に1つのキーと復帰がある場合でも、認証を台無しにするのに十分です。
私に起こったことは、ローカルマシンから2つのVMにアクセスできることです(2つのキーid_rsa.pubおよびid_rsa2.pub)。私のssh接続は、すべてのssh user@xx.xx.xx.xx接続にデフォルトでid_rsa.pubを使用していることに気付きました。構成ファイルを追加し、次のようにすべてのホストに使用するIDを指定することで問題を解決しました。
vi ~/.ssh/config
Add both hostnames and their identity file as follows:
Host server1.nixcraft.com
IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
IdentityFile /backup/home/aymen/.ssh/id_rsa2