SSH関連

関連記事:

  1. SSH関連 - (新) 檜山正幸のキマイラ飼育記 メモ編 この記事
  2. SSH関連 (2) - (新) 檜山正幸のキマイラ飼育記 メモ編
  3. SSH関連 (3) known_hosts - (新) 檜山正幸のキマイラ飼育記 メモ編


困っていること で述べたように、~/.ssh/ が二箇所ある。

さらに、拡張子が、.key, .ppk, なし, .pub のファイルがある。記憶はないが:

  1. .ppk は PuTTY〈パティ〉 のファイルらしい。PuTTYgen で生成されるらしい。PPK〈PuTTY Private Key〉形式。
  2. デフォルトないしは習慣では、秘密鍵を id_rsa.ppk、公開鍵を id_rsa.pub にするらしい。
  3. .keyファイルは、"-----BEGIN RSA PRIVATE KEY-----" で始まっている。openssl コマンドとか ssh-keygen コマンドで生成されたらしい。フォーマットは「PEM〈Privacy Enhanced Mail〉形式」というらしい。
  4. Proc-Type: と DEK-Info: というヘッダがある場合は decrypt されてないPEM形式。ヘッダなしで裸のBase64なら decrypt 済みということらしい。が フォーマットの変更があってナニヤラ、https://dev.classmethod.jp/articles/openssh78_potentially_incompatible_changes/ 参照。
  5. 現状のローカルケースでは、.key がヘッダ付きPEM形式、拡張子なしが裸のPEM形式、.ppk がPPK形式。
  6. 公開鍵は、秘密鍵から modulus と publicExponent だけを抜き出したものらしいので、.ppk とか .key(PEM形式)から、.pub(公開鍵部分)を生成することは出来るだろう。
  7. known_hosts も二箇所に2つある。
  8. ~/.ssh/known_hosts はユーザーレベル。サーバレベルのファイルとして、/etc/ssh/known_hosts 。
  9. ssh ではじめて特定ホストに接続しようとしたときに、~/.ssh/known_hosts にエントリが追加される。エントリーごとの情報は、相手サーバの fingerprint。
  10. ~/.ssh/known_hosts は、当該ユーザーがssh接続しようとしている先のホストを“ホスト認証”するために使われる。
  11. ssh-keygen -R 〈ホストにIPアドレスか名前〉 で特定のknown_hostsエントリーを消せる。
  12. known_hostsエントリーがなくても、「初めての接続」状態になるだけ。実害はない。が、パスワードによるユーザー認証になるので、それが原因でトラブルになる可能性がある。

詳細をチェックするのは面倒だが:

  1. .key と .ppk は消したい。
  2. 接続しないサーバの ~/.ssh/known_hostsエントリーは消したい。
  3. 秘密鍵ファイル id_rsa はひとつだけにしたい。
  4. 公開鍵ファイル id_rsa.pub のマスターはひとつだけにしたい。
  5. ローカルの id_rsa.pub を接続先サーバに何らかの方法で転送して、~/.ssh/authorized_keys にアペンドする。