SSHキーを設定する方法は?

SSHキーを設定する方法は?

私はDebianでさまざまなアカウント(Digital Ocean、GitHub、Bitbucketなど)に対して複数のSSHキーを生成してきましたが、非常に速く混乱しました。

私が取得した.sshフォルダの内容を一覧表示すると、次のようになります。

digOcn digOcn.pub github github.pub id_rsa id_rsa.pub

(私はid_rsaBitbucketのキーを使用します。)

私はこれを行い、eval 'ssh-agent -s'次のようにキーを「追加」しました。

  • ssh-add ~/.ssh/github(パスワードを入力してください)

  • ssh-add ~/.ssh/id_rsa(パスワードを入力してください)

  • ssh-add ~/.ssh/digOcn(追加しようとすると、digOcn「権限が拒否されました」と表示されます。何かに触れるのを避けたいのではなく、sudo他のキーには必要ありませんsudo。)

混乱した部分は次のとおりです。ショーでは、ssh-add -l次の情報を提供します。

2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 /home/USER/.ssh/id_rsa (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 /home/USER/.ssh/github (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 github (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 USER@COMPUTER_NAME (RSA)

はい、過去にSSHキーを追加しましたが、何をしたかを追跡することはできません。だからおそらく両方があると思います。/home/USER/.ssh/github そして github


私は何が間違っていましたか? SSHキーをどのように設定する必要がありますか?

答え1

まず、アカウントごとに異なるキーを使用することに問題はありません。対話型シェルの場合、これはほぼ過剰ですが、他の非対話型サービスを処理するときにこれを行うには妥当な理由があります。たとえば、GitHubは数年前からより強力なSSHキーを受け入れ始めましたが、Bitbucketはしばらく弱いキーの使用に固執しました。当時の正しい方法は、異なるキーを使ってGitHubとBitbucketにアクセスすることでした。

もう一つの例はですrsync。たとえば、rsyncWeb サーバーにファイルをデプロイする場合は、専用の SSH キーが必要な場合があります。これにより、対話型アカウントで一般的に使用される権限とは異なる権限を設定できます。

複数のキー管理に関する質問に戻ります。SSHを使用すると、ターゲットごとに異なるオプションを設定できます。これを行うには、~/.ssh/config次のようにファイルを編集する必要があります。

Host  bitbucket.org
    User                    hg
    IdentitiesOnly          yes
    IdentityFile            /home/user/.ssh/bitbucket

Host  github.com  gist.github.com
    User                    git
    IdentitiesOnly          yes
    IdentityFile            /home/user/.ssh/github

ファイルには~/.ssh/config権限0600が必要です(これがSSHによって実行されているかどうかは今は覚えていませんが、間違いなく問題ではありません)。

もちろん、インタラクティブシェルでも同じメカニズムを使用できるため、リモートユーザー名(ローカルユーザー名と異なる場合)、リモートポート、短縮ホスト名などの項目を設定してください。たとえば、

Host  sm
    Hostname                sphygmomanometer.example.com
    User                    human
    Port                    2222

だからあなたは実行することができます

ssh sm

変える

ssh -p 2222 [email protected]

ワイルドカードも許可されています。

Host *
    ControlPath             ~/.ssh/ctl-%u-%r-%h-%p
    ControlMaster           auto
    ControlPersist          5m

詳しくはマニュアルをお読みください。

最後に重要なのは:いいえ「働くeval 'ssh-agent -s'」。一般的な信仰とは異なり、これは深刻な安全上の問題を引き起こします。正しいアプローチは次のとおりです。

ssh-agent /bin/bash
ssh-add

(その後、プロンプトが表示されたら、キーパスワードを入力してください)。それはすべてです。キーでキーを押すか、他の方法でキーを押さないでください。

これにより、キーがロードされる新しいシェルが実行されます。アクセス権を取り消すには、exitこのシェルを使用してください。 「これを行うeval 'ssh-agent -s'と、」ログアウトしても認証プロキシが長時間実行され、不正アクセスに使用される可能性があります(最終的にはそうなります)。

編集する:次の小さな実験を試してください。

  1. eval $(ssh-agent -s)
  2. ログアウトまたは端末の終了
  3. もう一度ログインするか、新しい端末を開きます。
  4. pgrep ssh-agent

誰もこれらを殺さず、次回最新のマルウェアに使用する準備が整う ssh-agentまで残ります。reboot

関連情報