毎日、当社のサーバーでSSHパスワードを求め始めました。
最初に確認したのは、私のキーが.ssh/authorized_keys
サーバー内にあることを確認することでした。私の鍵は中にあり、何も変わりませんでした。何も変わりませんでした/etc/ssh/sshd_config
。
それから私は〜しようとしますこのアプリ新しくインストールされたUbuntu16サーバーから。この手順5を完了した後、新しいサーバーがSSHパスワードを再要求しました。
このssh-copy-id
コマンドはついに鍵のないSSHログインを完了しましたが、3行があることがわかりました.ssh/authorized_keys
。 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
答え1
ssh-copy-id
これはただ便利な機能だと思います。.ssh
キーがコンピュータにエクスポートされていることを確認し、必要に応じてディレクトリを作成しますが、デフォルトでは公開鍵を.ssh/authorized_keys
.opensshssh-copy-id
のシェルスクリプトに追加するので、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
ドキュメントがありませんので、自分で設定を確認してください。とにかくそうです。公開鍵をauthorized_keys
使用したくない場合は、手動でコピーできますssh-copy-id
。
UPD:2020(OpenSSH 8.2)RSA SHA-1 キーは廃止されました。。代替を使用する必要があります(リンクを参照)。