GNU/Linux >> Linux の 問題 >  >> Linux

すべての ID ファイルを自動的に試行しないように SSH を構成するにはどうすればよいですか?

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).

Linux
  1. LinuxでSSHキーベースの認証を構成する方法

  2. LinuxシステムのIDを変更する方法

  3. ターミナルを閉じるときにすべてのTmuxセッションを閉じるようにBashrcを構成するにはどうすればよいですか?

  1. ソフトウェアに関連するすべてのファイルを見つける方法は?

  2. ssh-keygen コマンドを使用してパスワードなしの ssh を構成する方法

  3. 特定のサイズを超えるファイルをすべて取得して削除する方法

  1. 複数のファイルの拡張子を変更するにはどうすればよいですか?

  2. シェルがSshから制御されているかどうかを検出する方法は?

  3. SSHログインでコマンドを自動的に実行する方法は?