web-dev-qa-db-ja.com

〜/ .ssh /内のすべてのキーファイルを試すようにsshに指示します

〜/ .ssh /ディレクトリに複数のキーがあり、それぞれに複数のサーバーがあるプロジェクト用に、それぞれに個別のプロジェクト名が付いています。 id_rsa_project1、id_rsa_project2

ただし、sshはそれらを検索しません。 ssh -v user@projectserverを実行すると、次のような出力が得られます。

...
debug1: Connection established.
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/me/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/me/.ssh/id_dsa
debug1: Trying private key: /home/me/.ssh/id_ecdsa
debug1: Trying private key: /home/me/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password
user@projectserver password: 

ssh_configのマンページには、デフォルトで検索されるIDは〜/ .ssh/id_dsa〜/ .ssh/id_ecdsa)と記載されているため、これは仕様によるもののようです。〜/ .ssh/id_ed25519および〜/ .ssh/id_rsa

もちろんできます:

  • 毎回コマンドラインに-i ~/.ssh/id_rsa_project1スイッチを追加するか、または
  • IdentityFile〜/.ssh/id_rsa_project1〜/ .ssh/configのサーバーに対する仕様に追加するか、または
  • プロジェクトごとにIdentityFile〜/.ssh/id_rsa_project1/ etc/ssh/ssh_configに追加します。

...しかし、これらはすべて、キーとキーファイルを定期的に変更するには面倒すぎるようです。

IdentityFile〜/.ssh/*/ etc/ssh/ssh_configに追加しようとしましたが、それが必要なようですワイルドカードではなく、リテラル*として。

sshに〜/ .ssh /内のallキーファイルを読み取って試すように指示するにはどうすればよいですか?

最も簡単な方法は、それらをssh-agentに追加することです。

開始エージェント:

eval `ssh-agent`

~/.sshにすべてのキーを追加します。

ssh-add ~/.ssh/id_rsa_*

ただし、接続するすべてのサーバーですべてのキーが試行されるため、これは理想的な方法ではないことに注意してください。 ~/.ssh/configで適切に構成することをお勧めします。

5
Jakuje