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 へのアクセスに異なるキーを使用することでした。

もう 1 つの例は ですrsync。たとえば、Web サーバーにファイルをデプロイするために を使用している場合はrsync、専用の 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、最新のマルウェアに利用される準備を整えます。

関連情報