私は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にアクセスすることでした。
もう一つの例はですrsync
。たとえば、rsync
Web サーバーにファイルをデプロイする場合は、専用の 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