web-dev-qa-db-ja.com

UNIXの秘密/公開SSHキーはどこにありますか?

RSAと公開鍵/秘密鍵システムがどのように機能するかを理解し始めており、私の秘密鍵と公開SSH鍵がどこに保存されているのか疑問に思っていました。ホームディレクトリに移動し、.sshディレクトリ(cd .ssh)を参照すると、「known_hosts」ファイルしか表示されません。このファイルには、知っているさまざまなリモートSSHサーバーの公開鍵が含まれていると思います。

これらのキーはどこにありますか?ちなみにそれらを作成したことさえ覚えていませんが、以前にssh接続を確立したことがあるので、どこかにあるはずです。

MAC OS 10.6でOpenSSH_5.2p1を使用しています。

ありがとう!

17

~/.ssh/id_rsaおよび~/id_rsa.pub通常。ただし、sshがペアを作成して保存する必要があるというわけではありません。sshは基本的にSSLプロトコルを使用します。SSLプロトコルは Diffie/Hellman 鍵交換アルゴリズムまたは何らかのバリアントを使用してセッションキーを確立します。つまり、接続を設定するハンドシェイクはセッションキーを生成し、セッションが完了するとそれを破棄します。

アルゴリズムを確認します。かなり気の利いたものです。かなり単純な数学を使用して、接続の両端で既知のキーを確立しますsendingover over接続。

15
Charlie Martin

個人の公開および秘密のsshキーは通常、次の場所に保存されます。

$HOME/.ssh/id_dsa     (private key)
$HOME/.ssh/id_dsa.pub (public key)

または、それらはid_rsaおよびid_rsa.pub DSAキーではなくRSAキーを作成した場合(OpenSSHは両方の形式をサポートします)。

しかし、以前にssh接続を確立したことがあるという事実は、sshキーがあることを意味するものではありません。 sshコマンドで個人用の鍵が見つからない場合は、リモートシステムのパスワードの入力を求められます。これは、キーを使用するよりも安全性が低くなります。

通常は、パスフレーズを使用してSSH秘密鍵を作成する必要があります。パスフレーズなしで作成した場合、秘密鍵のコピーを入手した人になりすまされる可能性があります。 ssh-agentを使用すると、パスフレーズを使用するたびにパスフレーズを再入力しなくても、キーをパスフレーズで使用できます。

4
Keith Thompson

キーペアを作成しなかった場合は、おそらく持っていません持っていません

SSH2トラフィックは、DH、ECDHアルゴリズム、またはGSSAPIキー交換を使用して確立された対称セッションキーで暗号化されます。ホストキーもユーザーキーもデータの暗号化には使用されません。それらの唯一の目的はauthenticationです。

SSHがseveral認証方式をサポートしていることを思い出してください:publickeyに加えて、ほとんどすべてのサーバーが単純なpasswordkeyboard-interactiveを受け入れます。鍵の生成または使用が行われます。パスワードは、確認のためにリモートサーバーに送信されるだけです。

言い換えれば、「私はすでにssh接続をすでに確立しているので、どこかになければならない」というのは誤りです。接続を確立するためのユーザーキーペアは不要です。


didキーペアを作成する場合、それはおそらく~/.ssh/id_*にあります-たとえば、デフォルトのRSAキーペアの場合はid_rsa ECDSAの場合はid_ecdsa、DSAの場合はid_dsa。これらのファイルには、キーペアのbothprivate部分とpublic部分の両方が含まれますが、public部分は通常、便宜上、別のid_*.pubファイルに自動的に抽出されます( id_rsa.pub for id_rsaなど)。

2
user1686