読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】REMOTE HOST IDENTIFICATION HAS CHANGED って怒られた。ssh-keygen・authorized_keys・known_hosts・ssh-agent と鍵のファイル名【LPICレベル1】

18レスカテゴリ:Linux
1: 名無しさん

サーバーを入れ直したら、ssh でつなぐときに WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! って出てつながらへん

2: 名無しさん

前提のおさらい。ホストのセキュリティは、要らんサービスを止めて、つないでよい相手を絞るところから。SSH は TCP の22番で、ログインに使う代表的なサービス

3: 名無しさん

>>1
SSH には2種類の鍵がある
ホスト鍵:サーバーが自分を証明する鍵。/etc/ssh/ssh_host_ed25519_key などで、入れ直すと作り直される
ユーザーの鍵:ユーザーが自分を証明する鍵。~/.ssh/id_ed25519 など
クライアントは前につないだサーバーのホスト鍵を ~/.ssh/known_hosts に覚えてて、違うと警告する。なりすましの防止

4: 名無しさん

>>3
ほな、入れ直したのが確かなら?

5: 名無しさん

>>4
ssh-keygen -R ホスト名 で known_hosts からその行を消して、つなぎ直して新しい鍵を確かめて受け入れる
試したら、作業用の known_hosts で ssh-keygen -R host1.example.com -f kh が kh updated. を出して、元のは kh.old に残った。ssh-keygen -F ホスト名 で探す、ssh-keygen -H でホスト名をハッシュにする(|1| で始まる形になった)

6: 名無しさん

>>5
VM をイメージから複製したら、ホスト鍵も同じになってしまうから、ssh-keygen -A などで作り直すんやったな

7: 名無しさん

パスワードやなくて鍵でログインしたい

8: 名無しさん

>>7
1. 手元で ssh-keygen で鍵の組を作る(秘密鍵と、.pub の公開鍵)
2. 公開鍵をサーバーの ~/.ssh/authorized_keys に1行で足す(ssh-copy-id user@host でも)
3. 秘密鍵は手元から出さない

9: 名無しさん

>>8
作業用のディレクトリで試した結果(OpenSSH 10.0)
-t なしの ssh-keygen:ED25519 の256ビット
-t rsa:3072ビット
-t ecdsa:256ビット
-t dsa:unknown key type dsa(OpenSSH 10 で DSA はなくなった)

10: 名無しさん

>>9
ファイル名は種類で決まってて、id_ed25519 と id_ed25519.pub、id_rsa と id_rsa.pub、id_ecdsa と id_ecdsa.pub。作られた秘密鍵は -rw-------、公開鍵は -rw-r--r-- やった

11: 名無しさん

>>8
authorized_keys に書いたのに、鍵で入れない

12: 名無しさん

>>11
権限を見る。sshd は StrictModes yes(既定)で、ホーム・~/.ssh・authorized_keys がほかの人に書き込めると鍵を使わない。~/.ssh は700、authorized_keys は600 にしとく
場所は sshd_config の AuthorizedKeysFile で、既定は .ssh/authorized_keys と .ssh/authorized_keys2

13: 名無しさん

>>8
秘密鍵のパスフレーズを毎回打つのが面倒

14: 名無しさん

>>13
ssh-agent に覚えさせる。eval "$(ssh-agent)" で起動して(SSH_AUTH_SOCK と SSH_AGENT_PID が入る)、ssh-add ~/.ssh/id_ed25519 で鍵を渡す。ssh-add -l で一覧、-D で全部消す

15: 名無しさん

>>14
試したら、起動した直後の ssh-add -l は The agent has no identities.、ssh-add の後は 256 user@host (ED25519) と出た。-D で All identities removed.、最後に ssh-agent -k で止めた(作業用のソケットで、自分の環境変数は変えてない)

16: 名無しさん

>>3
サーバーの設定で気を付けるところは?

17: 名無しさん

>>16
/etc/ssh/sshd_config。PermitRootLogin(既定は prohibit-password で、root はパスワードではだめ)、PasswordAuthentication(鍵だけにするなら no)、AllowUsers など。クライアントの設定は ~/.ssh/config と /etc/ssh/ssh_config

18: 名無しさん

>>3
ホスト鍵とユーザーの鍵、変わったら ssh-keygen -R、鍵は ssh-keygen で作って公開鍵を authorized_keys へ、権限は700と600、パスフレーズは ssh-agent と ssh-add。入れ直したせいやったか

管理人のひとこと