ssh-copy-id と手動コピー id_rsa.pub

ssh-copy-id と手動コピー id_rsa.pub

毎日、当社のサーバーで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 キーは廃止されました。。代替を使用する必要があります(リンクを参照)。

関連情報