私は Debian でさまざまなアカウント (Digital Ocean、GitHub、Bitbucket) 用に複数の SSH キーを作成していますが、すぐに混乱してしまいます。
.ssh フォルダーの内容を一覧表示すると、次のようになります。
digOcn digOcn.pub github github.pub id_rsa id_rsa.pub
( id_rsa
Bitbucket のキーを使用します。)
それを実行して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'
操作」を行うと、認証エージェントはログオフ後も長時間実行されたままになり、不正アクセスに使用される可能性があります (最終的には使用されることになります)。
編集:次の小さな実験を試してみてください:
eval $(ssh-agent -s)
- ログオフするか、端末を終了してください
- 再度ログインするか、新しいターミナルを開いてください
pgrep ssh-agent
誰もこれらの を殺そうとはせずssh-agent
、次の まで残りreboot
、最新のマルウェアに利用される準備を整えます。