Sshキーとその設定方法についていくつか質問があることを知っています。しかし、私は私の質問に答えるために何も見つけませんでした。
.ssh
ディレクトリにいくつかのsshキーがあります。一部のリモートでは、異なるキーが使用されます。
ここで、どのホストにどのキーを使用するか.ssh/config
で設定したり、エージェントに手動で追加したりしていません。 ssh-keygen
でキーを作成したところ、機能します。
今、私は誰がそれに対して責任があり、どのキーが自動的に試行されるのか知りたいですか?約5つのキーの互換性が自動的にチェックされるというメッセージがありますが、この情報がどこにあるのかわかりません。
ssh-keygen
はこれらのキーを自動的にエージェントに追加しますか?または、sshはデフォルトで一致するキーを検索しますか?
Sshクライアントは、一致するキーが見つかるまですべてのキーをチェックします。
これがどのように機能するかです(これは非常に単純化され、この前に非常に複雑なダンスが行われ、これをすべて暗号化します):
キーとなるファイルはクライアントによって異なります。
Opensshクライアント(Ubuntuのデフォルトクライアント)の場合、そのマニュアルページによると、プライベートキーであるはずのファイルは./sshid_rsa、.ssh/id_dsa、.ssh/id_ecdsa、および-iフラグ(it複数のファイルをサポートします)および構成ファイルで宣言されたファイル。
任意のファイルをキーとして使用しようとしたときに行を出力するように-vオプションを指定できます。これは、非キーログインの例です。
$ ssh -v www.hostremoved.com
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
<...>
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/javier/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/javier/.ssh/id_dsa
debug1: Trying private key: /home/javier/.ssh/id_ecdsa
debug1: Next authentication method: password
<...>
ご覧のとおり、試行するすべてのキーが出力され、すべて失敗します。これをシステムで使用して、自分のシステムでsshが使用しているファイルを検出できます。
既存のキーが見つかって試行された場合の出力を以下に示します
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: user@xyz
user@xyz
は、公開鍵に追加される情報です。
Sshクライアントがどのように秘密鍵を見つけるか疑問に思っているなら、それは魔法ではありません。 Gnome(xfceおよびKDEも)の下には、末尾の.ssh
を持つ対応する公開キーを持つ.pub
ディレクトリにキーを自動的に追加する特別なssh-agentがあります。
そのような快適なsshエージェントがない場合は、ssh-add key
を使用して秘密鍵を追加する必要があります。
公開鍵をリモートマシンのauthorized_keys
ファイルにコピーしたと仮定すると、sshクライアントは、ローカルマシンの秘密キーがリモートマシンの公開キーと一致するかどうかをチェックします。
Openssh-client 1:5.3p1-3ubuntu7のssh_config(5)からコピー/貼り付け:
IdentityFile
ユーザーのRSAまたはDSA認証IDが読み取られるファイルを指定します。デフォルトは、プロトコルバージョン1の場合は〜/ .ssh/identity、プロトコルバージョン2の場合は〜/ .ssh/id_rsaおよび〜/ .ssh/id_dsaです。さらに、認証エージェントによって表されるすべてのIDが認証に使用されます。
ファイル名では、チルダ構文を使用してユーザーのホームディレクトリまたは次のエスケープ文字のいずれかを参照できます: '%d'(ローカルユーザーのホームディレクトリ)、 '%u'(ローカルユーザー名)、 '%l'(ローカルホスト名)、 '%h'(リモートホスト名)、または '%r'(リモートユーザー名)。
構成ファイルで複数のIDファイルを指定することができます。これらのすべてのIDは順番に試行されます。
一番下の行は、プロトコルのバージョンによって異なります。バージョン2(最近の可能性が高い)では、上記のドキュメントに従ってid_rsaとid_dsaがこの順序で試行されます。新しいバージョンには、id_ecdsaなどの他のタイプのキーがデフォルトで含まれている場合があります。詳細については、使用しているバージョンのマニュアルページを確認してください。