
openssh-server をインストールし、 を使用してキーを作成しましたssh-keygen
。その後、 を実行してローカル ポート転送を使用してテストしようとしましたssh -L 8080:www.nytimes.com:80 127.0.0.1
。ただし、このコマンドが提供するキー フィンガープリントは、 を実行したときに取得するキー フィンガープリントではありませんssh-keygen -l
。.ssh ディレクトリを削除しても、 で作成したものではない同じフィンガープリントが取得されますssh-keygen
。システムに別のキーがあるのでしょうか。このキーはどこにありますか。openssh-server で使用するためにこのキーを選択するにはどうすればよいですか。
答え1
SSH セッションを作成すると、2 つの異なるキー ペア (各ペアのフィンガープリント付き) が関係します。1 つは、 に保存されているユーザーのキーです~/.ssh
。ユーザーの SSH キー ID は、別のコンピューターにログインするための資格情報として使用されることがあります (キー ベースのログインを設定している場合)。
もう 1 つは SSH サーバーのキーです。これは、別のサーバーに初めて接続するときにフィンガープリントが表示されるキーです。このキーの ID は、意図した SSH サーバーにログインしていることを確認するために使用されます。パスワードを使用している場合、これは重要です。なぜなら、攻撃者のマシンに誤ってログインしようとするのは望ましくないからです。攻撃者は、入力したパスワードを入手します。すると、攻撃者は、あなたがログインしていると思っていたマシンにログインできます。(これは、「中間者攻撃」)SSH サーバーがログイン時に自身を識別するために使用するキーは にあり/etc/ssh/
、通常は のような名前が付けられますssh_host_rsa_key
。
実際に、設定によってSSH サーバーがファイル内でキーを検索する場所を変更できます。/etc/ssh/sshd_config
HostKey /path/to/host/key
デフォルトでは、ssh-keygen
は現在のユーザーのキーを作成します。このキーは、 に保存されます。ユーザー キーとサーバー キーの形式は同じです。違いは、それらが配置される場所と、 にそれらを指すディレクティブがある~/.ssh
かどうかです。/etc/ssh/sshd_config
HostKey
openssh-server パッケージをインストールすると、サーバーが使用するキーが自動的に生成されます。不明なフィンガープリントを持つキーはそこから取得されます。SSH サーバーの (RSA*) キーのフィンガープリントを確認する場合は、 を実行できますssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
。
* 暗号化アルゴリズムにはさまざまな種類があり、それぞれ異なるキーを使用します。一般的なものは、DSA (弱い)、RSA (古いデフォルト)、ECDSA (新しいデフォルト) です。
答え2
SSH ホスト キーは に保存されますが/etc/ssh/
、通常は選択する必要はありません。これらのキーは、openssh-server パッケージがインストールされたときに生成されました。
キーのフィンガープリントを一覧表示できますssh-keygen -l -f /etc/ssh/ssh_host_key.pub
が、公開キーごとにこれを繰り返す必要があります。
答え3
ssh-keygen
SSH フィンガープリントはサーバーで生成されません。これは SSH サーバーによって生成されます。ssh-keygen
システムの公開/秘密キー ペアを作成します。このペアは、後でプレーン テキストのパスコードをサーバーに送信せずに SSH サーバーにアクセスするために使用できます。
サーバーのフィンガープリントは、生成した公開鍵/秘密鍵のペアのフィンガープリントとは別物であるため、当然ながら、サーバーのフィンガープリントとは表示されません。