サーバーに公開鍵を登録した後、パスワードの入力を求めるメッセージを表示する[閉じる]

サーバーに公開鍵を登録した後、パスワードの入力を求めるメッセージを表示する[閉じる]

注:これいいえ人気のある質問と重複しています。 公開鍵認証を使用しても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

  1. wc コマンドを使用します。 次のコマンドを使用します。

    wc ~/.ssh/authorized_keys
    

    私が得た結果は次のとおりです。

      1   3 398 /home/superjohnny/.ssh/authorized_keys
    
  2. 自分のホームディレクトリが暗号化されていることを確認してください。 次のコマンドを使用しました。

    ls -A /home/superjohnny
    

    私は次のような結果を得ました。

    .bash_history  .bash_logout  .bashrc  .cache  .profile  .ssh  .viminfo
    

    .encrypted フォルダが見つかりません。

  3. 追加情報を調べるには、デバッグモードに入ります。 セッションで次のコマンドを実行しました。

    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 このヘッダーは、すでに実行したキーファイルを再生成するように求められます。たくさん移流

  1. grep コマンドを使用します。 次のコマンドを使用します。

    grep -v '^[[:space:]]*$' ~/.ssh/authorized_keys | wc -l
    

    私が得た結果は次のとおりです。

    1
    
  2. ログメッセージを確認してください。 次のコマンドを使用します。

    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日以外は、他の日には何のメッセージも受け取りませんでした。

  3. 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
  1. ホームディレクトリの権限がより小さいことを確認してください。 .sshディレクトリが機能しない可能性があると考えて、ホームディレクトリの権限を変更してみました。次のコマンドを使用しました。

    chmod 755 ~/
    

    ただし、sudo service ssh restartを使用して端末を再起動するとまったく効果がなく、他の端末に再度ログインしてもパスワードの入力を求められます。

  2. パスワードを無効にしてみてください。 パスワードを無効にして分離状態を終了しようとしましたが、それでも機能しない場合は変更できます。私は次のように入る

    /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クライアントでは、秘密鍵を分離に入れませんでした。最初は、リモートサーバーが私のファイルを見て、キーがあるかどうかを確認すると思いました。私の考えは間違っていました。私の友人は、これがセキュリティにとって大きな危険になり、秘密鍵を次のようにパテに入れる必要があると言いました。

ここに画像の説明を入力してください。

助けてくれてありがとう。この問題を解決する過程で多くのことを学びました。

関連情報