/etc/hostsとknown_hostsの違い
どっちも似たようなもんじゃろw?とか思ってて恥をかいたので整理する。
/etc/hosts
いわゆるhostsファイル。IPとホスト名(ex. google.com, localhost)の対応が書いてあるぞ。
例
127.0.0.1 localhost
192.168.10.10 homestead.test
そのマシンにおける「なんちゃってDNS」と思っておけばよさそう。
なのでsshに限らずwebブラウザに「localhost」と打てば127.0.0.1にアクセスできるようになる。
参考:
known_hosts
クライアント側の ~/.ssh/known_hosts にあるやつ。 ssh接続を使う時に使われるぞ。
例
`hoge.huga.co.jp,192.128.10.126 ssh-rsa AAAAB3NzaC1......(略)
known_hostsには、IPアドレス (とホスト名) をもつサーバのホスト公開鍵が登録されている。
この公開鍵を使って、ホストサーバーに秘密鍵があるか確かめてるぞ(公開鍵暗号技術)。
参考:
だから、IPとホスト名は同じであっても、サーバリプレースなどでサーバの公開鍵が変わった場合とかは、known_hostsの鍵情報が残っているとsshできなかったりするぞ(今日そうなった)。
authorized_keys
ついでなので。サーバ側の~/.ssh/authorized_keys にあるやつ。
ここにはssh接続に使う秘密鍵に対応するクライアントの公開鍵を登録しておくんじゃ。
known_hostsはなくてもログインできるが、authorized_keysにクライアントの公開鍵が登録されていないとssh接続できなくなるぞ。
追記: ssh-agent
サーバーにログインしてそっからgitコマンドを使いたい時など、ローカルの公開鍵をコピーして持っていくのではなく、ssh-agentを使いましょう。