IdentitiesOnly=yes
を使用できます IdentityFile
と一緒のオプション (ssh_config の man ページを参照してください)。そうすれば、検索するファイルを指定できます。
この例では、ssh は のみ ssh_config ファイルで指定された ID と、コマンド ラインにリストされている 4 つの ID を調べます (エージェントによって提供された ID は無視されます):
ssh -o IdentitiesOnly=yes \
-o IdentityFile=id1.key \
-o IdentityFile=id2.key \
-i id3.key \
-i id4.key \
[email protected]
フォーム -i
と -o IdentityFile=
交換可能です。
.ssh/config
で 、次のような構成を含めることができます:
Host example
User user123
Hostname example.com
IdentityFile ~/.ssh/id_rsa_example
IdentityFile ~/.ssh/id_rsa_example2
IdentitiesOnly yes
user76528の短い答えは正しいですが、私はちょうどこの問題を抱えていて、いくつかの詳細が役立つと思いました. 「なぜ ssh は私の identityfile 構成オプションを無視するのか」と疑問に思っている場合は、この解決策も気になるかもしれません。
まず、ssh_config の他のすべてのオプションとは異なり、ssh は最初の IdentityFile
を使用しません。 それが見つけること。代わりに IdentityFile
オプションは、そのファイルを使用される ID のリストに追加します。複数の IdentityFile
を積み重ねることができます ssh クライアントは、サーバーが 1 つを受け入れるか接続を拒否するまで、すべてのオプションを試します。
次に、ssh-agent を使用すると、ssh_config の IdentityFile (または -i) オプションでキーを指定していなくても、ssh は自動的にエージェントのキーを使用しようとします。これは、Too many authentication failures for user
を取得する一般的な理由です。 エラー。 IdentitiesOnly yes
の使用 オプションはこの動作を無効にします。
複数のユーザーとして複数のシステムに ssh する場合は、 IdentitiesOnly yes
を入れることをお勧めします ssh_config のグローバル セクションに、各 IdentityFile
を配置します 適切なホスト サブセクション内。
私は通常、次のようにします:
$ ssh -o IdentitiesOnly=yes -F /dev/null -i ~/path/to/some_id_rsa [email protected]
オプションは次のとおりです:
-o IdentitiesOnly=yes
- CLI 経由で提供されたキーのみを使用し、$HOME/.ssh
からは使用しないように SSH に指示します。 またはssh-agent経由-F /dev/null
-$HOME/.ssh/config
の使用を無効にします-i ~/path/to/some_id_rsa
- 接続に明示的に使用するキー
例
$ ssh -v -o IdentitiesOnly=yes -F /dev/null -i ~/my_id_rsa [email protected]
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /dev/null
debug1: Connecting to someserver.mydom.com [10.128.12.124] port 22.
debug1: Connection established.
debug1: identity file /Users/sammingolelli/my_id_rsa type 1
debug1: identity file /Users/sammingolelli/my_id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA f5:60:30:71:8c:a3:da:a3:fe:b1:6d:0b:20:87:23:e1
debug1: Host 'someserver' is known and matches the RSA host key.
debug1: Found key in /Users/sammingolelli/.ssh/known_hosts:103
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/sammingolelli/my_id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to someserver.mydom.com ([10.128.12.124]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Last login: Tue Dec 8 19:03:24 2015 from 153.65.219.15
someserver$
上記の出力で、ssh
であることに注意してください。 my_id_rsa
のみを特定しました CLI 経由の秘密鍵と、それを使用して someserver に接続すること。
特にこれらのセクション:
debug1: identity file /Users/sammingolelli/my_id_rsa type 1
debug1: identity file /Users/sammingolelli/my_id_rsa-cert type -1
そして:
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/sammingolelli/my_id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).