web-dev-qa-db-ja.com

SSH:/ etc / ssh / [Host files]と〜/ .ssh / [public key]の違いや相互作用は何ですか

Ubuntuやその他のLinuxビルドを10年間試してきた後、私はSSHを初めて使用します。今日はSSHのセットアップに成功しましたが、途中でハングアップや頭痛の種がありました。システムは正常に動作していますが、完全にはわかりませんhow正常に機能しており、私を怒らせています。

私がしばらくの間遭遇していた主な頭痛はこれでした:

  1. OS Xと「ssh」コマンドを使ってUbuntuマシンにSSHで接続します。それを行うと、これが接続先の新しいホストであるという警告が表示され、RSAフィンガープリントが与えられました。
  2. 次に、VNC経由でUbuntuマシンにアクセスし、ssh-keygen -lf [公開鍵]を実行し、フィンガープリント以前とは異なるを実行します。
  3. 欲求不満。

しばらく探し回った後、/ etc/ssh/ssh_Host_rsa_key.pubを見つけました。一言で言えば、私はフィンガープリントを確認しましたが、OS Xがフィンガープリントを取得しているところです。同じフォルダー内で、一致する秘密キーのように見えるものを確認します(指紋を確認することで検証されます)。

だから今私の前提は、これらが事前に作成されたデフォルトのキーであり、独自のキーなどを生成せずに使用できることです。私は自分の(パスワードで保護された)キーを生成したので、それらを置き換えたかったのです。それで、私はSSHD_configファイルに入り、RSAキーのディレクトリをホームディレクトリに変更しました(〜/ .ssh/[authorized_keysファイル内の公開キー])。次に、ssh_Host_rsa_key.pubを削除しました。それはうまくいきませんでした。ホストキーを再構築し、構成の変更を元に戻し、生成された公開キーをホームディレクトリに残し、生成された秘密キーをクライアントに移動しました。接続は適切に機能し、指紋OS X(クライアント)は、ssh_Host_rsa_key.pubとの一致を要求します。

さらに、セキュリティが機能していることもわかっています。authorized_keysファイルをhome/.ssh /から削除すると、クライアントが接続できなくなるためです。

私の質問:

  1. クライアントのOS Xからフィンガープリントがssh_Host_rsa_key.pubのフィンガープリントであると通知された場合、一致する秘密鍵なしで接続できるのはなぜですか?

  2. 別の言い方をすると、生成された秘密鍵と公開鍵も適切に配置する必要がある場合、ssh_Host鍵は(一致する秘密鍵がクライアント上にない場合)どのような役割を果たしますか?

  3. Sshが適切に接続するには、2つの公開鍵と1つの秘密鍵が必要であると言うのは正確ですか?または、/ etc/ssh/ssh_Host_rsa_key.pubの内容を、生成された公開鍵の内容(承認されたユーザーにもある)で上書きする必要がありますか? [編集:ssh_Host_rsa_key.pubとssh_Host_rsa_keyを、生成した秘密鍵と公開鍵(もちろん名前を変更)に置き換えてみました。 SSHサービスを再起動しようとすると、「End must be KEY = VALUE pairs」が表示されます。そのため、SSHサービスを停止しました。]

助けてくれてありがとう。私は何時間もグーグルで働いていて、たまたまGoogleで働いている、よりテクノロジーに詳しい友人にさえ電話をかけました。そして、私は答えを得ていません。

3
TheSecurityGuy

ホストキーはサーバーを認証し、キーはサーバーを認証します。

SSHホストキーは、自分が思っているサーバーに接続していることを確認するために使用できるフィンガープリントを提供します。最初の接続時に提示された公開鍵のフィンガープリントを手動で確認し、それを保存します。その後のすべての接続で、サーバーは、その公開鍵と一致する秘密鍵を保持していることを証明するものを送信します。そのため、最初に手動で検証したのはサーバーです(...そのサーバーだけがその秘密鍵を持っているためです... )。

これは、サーバーに対してyourselfを認証するために使用するキーペアと完全に分離されています。どちらもキーペアですが、接続プロセスのさまざまな時点で、さまざまなエンティティがさまざまな目的で保持しています。

全体として、SSH接続には2つの鍵ペアが必要です-

  • クライアントソフトウェアは、サーバーの(Host)公開キーを、サーバーがHost秘密キーで暗号化して送信するデータと照合します。これには、公開鍵のコピーが必要です。公開鍵は最初の接続時に渡され、承認した場合はクライアントが保存します。
  • サーバーはser秘密鍵で暗号化された認証データをチェックしますser公開鍵のコピーを使用します。あなたのためにそこに)。
8
gowenfawr