ポートフォワードしてSSHしてると,localhostのHost keyが違うといわれてしまう
ついでなので,~/.ssh/config ほかの使い方も紹介しておく
たとえば,上の例をポートフォワードでやる場合
client$ ssh gw -L 10022:host:22 -NTf client$ ssh localhost -p 10022
でもまあ接続できる.でも別のマシンもあって,同じように接続すると
client$ ssh gw -L 10022:host:22 -L 20022:host2:22 -NTf client$ ssh localhost -p 20022 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Please contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Offending key in /home/user/.ssh/known_hosts:xxx RSA host key for localhost has changed and you have requested strict checking. Host key verification failed.
となってしまう.
/home/user/.ssh/known_hosts のxxx行目を削除しないと接続できなくなってしまう.
それで,一つ目の対策方法としては(お勧めできないけどね)
configファイルに
Host localhost StrictHostKeyChecking no UserKnownHostsFile ~/.ssh/localhost_key
として,
client$ touch ~/.ssh/localhost_key client$ chmod -w ~/.ssh/localhost_key
とすれば,接続できないってことはなくなる...ただ毎回Host Keyが追加できなかったと文句言われるけど...
ただいいところは,ホストごとにまったく登録が必要がないことかな.
で,もうひとつの解は
Host host HostKeyAlias host HostName localhost Port 10122 Host host2 HostKeyAlias host2 HostName localhost Port 20122 Host host3 HostKeyAlias host3 HostName localhost Port 20122 User hatena
とかすると
client$ ssh gw -L 10022:host:22 -L 20022:host2:22 -L 30022:host3:22 -NTf client$ ssh host host$ exit client$ ssh host2 host2$ exit client$ ssh host3 host3$ exit
で接続できることができると思う.
ただ,ホストごとに書かないから,よく使うホストはここに書くといい.