ある日から、会社のサーバーがSSHパスワードの入力を求め始めました。
最初に確認したのは、キーがサーバーの.ssh/authorized_keys
内にあるかどうかを確認することでした。私の鍵は中にあり、何も変わっていません。また、/etc/ssh/sshd_config
では何も変更されていません。
次に、この手順を新たに実行しようとしました。 Ubuntu16サーバーをインストールしました。これらの5つの手順を完了すると、新しいサーバーからSSHパスワードの入力を再度求められました。
ssh-copy-id
コマンドは、ついにキーレスSSHログインを完了しましたが、.ssh/authorized_keys
には3つの行があります。1つはssh-dss
で始まり、2つはssh-rsa
で始まります。
上記のリンクからの5つの手順の手順は、過去に1つのキーだけで機能していたことを覚えています。
最近何か変更がありましたか?上記の手順が機能しなくなったのはなぜですか?
編集:ssh-copy-id
が3つのキーをまとめて.ssh/authorized_keys
にコピーするため次のファイルにあります:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
リモートの.ssh/authorized_keys
ファイルから1行ずつ削除しました
削除された~/.ssh/id_dsa
行-自動ログインに成功しました
削除された~/.ssh/id_rsa.pub
行-自動ログインに成功しました
削除された~/.ssh/sshkey.pub
行-自動ログイン成功しません-パスワードの要求
~/.ssh/sshkey.pub
のコンテンツのみが必要です。SSHがsshkey.pub
を比較している理由id_rsa.pub
オンラインチュートリアルの例のように?
コメント
回答
ssh-copy-id
は単なる便利な機能です。キーがすでにマシンにエクスポートされているかどうかを確認し、必要に応じて.ssh
ディレクトリを作成しますが、基本的には公開キーを.ssh/authorized_keys
に追加するだけです。 。 ssh-copy-id
は(opensshの)シェルスクリプトであるため、最後にそのコード(vi `which ssh-copy-id`
)を読むことができます:
[ "$DRY_RUN" ] || printf "%s\n" "$NEW_IDS" | \ ssh "$@" "exec sh -c "cd ; umask 077 ; mkdir -p .ssh && { [ -z ""`tail -1c .ssh/authorized_keys 2>/dev/null`"" ] || echo >> .ssh/authorized_keys ; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi"" \ || exit 1
認証中は、authorized_keys
のみがチェックされます。 openssh ドキュメントから:
ファイル〜/ .ssh / authorized_keysに公開がリストされていますログインが許可されているキー。ユーザーがログインすると、sshプログラムは、認証に使用するキーペアをサーバーに通知します。クライアントは秘密鍵にアクセスできることを証明し、サーバーは対応する公開鍵がアカウントの受け入れを許可されていることを確認します。
この回答を期待します質問のタイトル「ssh-copy-idと手動コピーid_rsa.pub」。このファイル~/.ssh/sshkey.pub
持っていないので、セットアップの問題を自分で解決したことを願っています。とにかく、はい、公開鍵を手動で ssh-copy-id
を使用していません。
ssh -v your-remote-server
の出力を質問に追加してください。