注:これいいえ人気のある質問と重複しています。 公開鍵認証を使用してもSSHパスワードプロンプトが表示され続けるのはなぜですか?
元の記事がありますが、役に立つほど多くの回答が得られませんでした。 3日間の問題を詳しく説明しようとします。
Ubuntuサーバーにid_rsa.pub SSHキーを追加するにはどうすればよいですか?
私がしたことは、通常のWindows 10コンピュータでgit scm端末を介して作成したことです(ここで見つけることができます)。https://git-for-windows.github.io/)。 Windows 10の通常のcmdプロンプトが機能しなかったため、gitを使用する必要がありました。 ssh-keygenで作成し、id_rsaとid_rsa.pubという2つのキーが生成されました。
その後、Putty端末に入り、リモートサーバーにログインし、/home/superjohnnyフォルダ(私のsudoユーザー)に.sshディレクトリを作成し、.sshフォルダ内にauthorized_keysというフォルダを作成しました。 id_rsa.pubキーをauthorized_keysフォルダにコピーして貼り付け、chmod 600 .ssh/authorized_keysを実行して600権限を追加しました。
これを実行した後、/etc/ssh/sshd_configに移動し、構成設定に以下を追加しました。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
これらの行もすべてコメントアウトされませんでした。その後、sudo service ssh restartを実行しましたが、ログインしようとするとパスワードプロンプトが表示されます。これは一週間続きました。
私が試したこと: 私は上記の2つのスレッドを使用して回答を得るために、Google検索も広く使用しました。私が使った方法は次のとおりです。
1.キーを1行に入力します 私のコンピュータのgit scm端末で次のコマンドを試しました。
cat ~/.ssh/id_rsa.pub | awk '{print}' ORS=' '
上記のコマンドは、コピー時にキーがすでに1行にあるため、何もしないと推定されます。端末はキーを受け入れることができません。これは私がコマンドを見つけるために使用したスレッドです。 https://stackoverflow.com/questions/36818651/how-to-display-output-on-single-line
wc コマンドを使用します。 次のコマンドを使用します。
wc ~/.ssh/authorized_keys
私が得た結果は次のとおりです。
1 3 398 /home/superjohnny/.ssh/authorized_keys
自分のホームディレクトリが暗号化されていることを確認してください。 次のコマンドを使用しました。
ls -A /home/superjohnny
私は次のような結果を得ました。
.bash_history .bash_logout .bashrc .cache .profile .ssh .viminfo
.encrypted フォルダが見つかりません。
追加情報を調べるには、デバッグモードに入ります。 セッションで次のコマンドを実行しました。
ssh -v superjohnny@myip
結果は次のとおりです。
debug1: Found key in /home/superjohnny/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/superjohnny/.ssh/id_rsa
debug1: Trying private key: /home/superjohnny/.ssh/id_dsa
debug1: Trying private key: /home/superjohnny/.ssh/id_ecdsa
debug1: Trying private key: /home/superjohnny/.ssh/id_ed25519
debug1: Next authentication method: password
これは明らかに何かについてのヒントですが、しばらくWebを閲覧した後、この問題に関する多くの情報が見つからず、ここで1つのスレッドしか見つかりませんでした。https://askubuntu.com/questions/54670/passwordless-ssh-not-working このヘッダーは、すでに実行したキーファイルを再生成するように求められます。たくさん移流
grep コマンドを使用します。 次のコマンドを使用します。
grep -v '^[[:space:]]*$' ~/.ssh/authorized_keys | wc -l
私が得た結果は次のとおりです。
1
ログメッセージを確認してください。 次のコマンドを使用します。
sudo vi /var/log/auth.log
同じ日に同じエラーが発生したため、多くのエラーが発生しましたが、そのうちのいくつかを投稿します。
Apr 25 04:14:01 ramnode CRON[977]: pam_unix(cron:session): session closed for user root Apr 25 04:54:01 ramnode CRON[1076]: pam_env(cron:session): Unable to open env file: /etc/default/locale: No such file or directory
4月25日以外は、他の日には何のメッセージも受け取りませんでした。
sshd を使用してデバッグモードに入ります。
行為
/usr/sbin/sshd -d
私に出力を与える:
debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: could not open key file '/etc/ssh/ssh_host_rsa_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_rsa_key
debug1: could not open key file '/etc/ssh/ssh_host_dsa_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_dsa_key
debug1: could not open key file '/etc/ssh/ssh_host_ecdsa_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
debug1: could not open key file '/etc/ssh/ssh_host_ed25519_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_ed25519_key
debug1: setgroups() failed: Operation not permitted
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
ただし、次のようにコマンドの前にsudoを追加します。
sudo /usr/sbin/sshd -d
私に出力を与える:
debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type ECDSA
debug1: private host key: #2 type 3 ECDSA
debug1: private host key: #3 type 4 ED25519
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
Set /proc/self/oom_score_adj from -800 to -1000
ホームディレクトリの権限がより小さいことを確認してください。 .sshディレクトリが機能しない可能性があると考えて、ホームディレクトリの権限を変更してみました。次のコマンドを使用しました。
chmod 755 ~/
ただし、sudo service ssh restartを使用して端末を再起動するとまったく効果がなく、他の端末に再度ログインしてもパスワードの入力を求められます。
パスワードを無効にしてみてください。 パスワードを無効にして分離状態を終了しようとしましたが、それでも機能しない場合は変更できます。私は次のように入る
/etc/ssh/sshd_config
ただし、新しい端末画面に入ると、次のエラーが発生します。
Disconnected: No supported authentication methods avaliable(server sent: publickey
システムがSSHキーを使用しようとしてパスワードログインを無効にしようとすると、次の/var/log/auth.logメッセージが表示されます。
May 1 09:02:00 ramnode sshd[16905]: error: Received disconnect from 64.121.77.168: 14: No supported authentication methods available [preauth]
May 1 09:02:13 ramnode sudo: superjohnny : TTY=pts/1 ; PWD=/home/superjohnny ; USER=root ; COMMAND=/usr/bin/vi /var/log/auth.log
May 1 09:02:13 ramnode sudo: pam_unix(sudo:session): session opened for user root by superjohnny(uid=0)
答え1
私は私の質問に忍耐を持って待っていた非常に良い友人の助けを借りて答えを見つけました。問題は、Puttyクライアントが私のキーを受け入れるように設定されていないことです。認証されたキーファイルとすべての権限がありますが、これまではこの小さな問題が見つかりませんでした。
私のPuttyクライアントでは、秘密鍵を分離に入れませんでした。最初は、リモートサーバーが私のファイルを見て、キーがあるかどうかを確認すると思いました。私の考えは間違っていました。私の友人は、これがセキュリティにとって大きな危険になり、秘密鍵を次のようにパテに入れる必要があると言いました。
助けてくれてありがとう。この問題を解決する過程で多くのことを学びました。