SSHで接続しようとしたら怒られた(KEYの問題だとか言って)

この記事はだいぶ前に書かれたものなので情報が古いかもしれません
後ろの中央付近にいる三人が誰だか分からん

この記事を三行にまとめると

SSHで接続しようとしたらwarningエラーが出た
known_hostsというファイルを探して中身を書き換えるのじゃ
Keyのキャラ(知ってる範囲)で一番好きなのは秋子さんかなぁ……
ということで、タイトルの通り、ターミナルを起動してSSHでサーバーに接続しようとしたら、何かエラーが出て接続できなかったっつー話です。

KEYの問題って言うのは、SSHで接続するときに使用する鍵のことね。別に俺が何か無礼を働いたせいで来ヶ谷さんや智代にフルボッコにされたとかそういうことではない。



実際どんな風に怒られたかってーと

いつも通り接続しようとしたら、こんなエラーが出て接続できなかったんす。

//SSHコマンド
$ ssh -i SSH鍵のパス ユーザー@ホスト名

//エラー内容
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

SSHで接続するとき、公開鍵認証を行なって接続するっていうのがあるんですよ。僕の場合は拡張子が『.pub』っていうファイルが鍵になっておりやす。

通常ならこれでサーバーにアクセスできるんですが、今回はWARNINGエラーが出たと。

まあ、原因は単純で、要は公開鍵の内容が変わってるから認証に失敗したぞって言われてるわけです。パスワードを間違えてログインできないようなもんですね。

こういうときは『known_hosts』っていうファイルの中を見て、必要な箇所を削除すると良い。

Macの場合だと、.sshっていうディレクトリの中にあるんですけど、この.sshってのは隠しファイル(隠しフォルダ?)ってやつでして、通常、Finderなどでは表示されないものです。なので、ターミナルで隠しファイルごと表示させるか、Finderでも隠しファイルが見えるように設定を変えてしまうなどの対応が必要っす。

Windowsの場合だと……どこにあるのかな。TeraTermを使っている場合は、TeraTermをインストールしたフォルダの中に『ssh_known_hosts』という名前で置いてあるらしいんだけど、ちゃんと確認はしてないです。今度Windowsパソコンで確認しとくわ。

ってことで、すまんけどこっから先はMacの場合。



ターミナルで表示する場合

こっちは楽勝。lsコマンドにaオプションをつければ良い(今回はおまけでlオプションもつけてる)

$ ls -al ~

これで一覧の中に『.ssh』ってのがあるはずなんで、その中を見るとknown_hostsというファイルがあります。

まあ、lsコマンド使わなくても、viコマンドとか使って直接known_hostsを開いちゃえば良いって話なんですけどね。

$ vi ~/.ssh/known_hosts

こんなんで行けるはず。



Finderで表示する場合

どちらにしろターミナルは起動しなきゃいけないんだけど、こんなコマンドを打つと、Finderでも隠しファイルやらフォルダが表示されるようになる。

$ defaults write com.apple.finder AppleShowAllFiles true
$ killall Finder

『killall Finder』はFinderを再起動させているコマンドです。もしまた非表示に戻したい場合は、一行目のtrueをfalseに変えるか、writeをdeleteに変えて設定自体を削除するかして、もっかいFinderを再起動させる。

//falseに変える場合
$ defaults write com.apple.finder AppleShowAllFiles false

//設定を削除する場合
$ defaults delete com.apple.finder AppleShowAllFiles



known_hostsを見つけたら

実際にファイルの中を見てみると、何か暗号化されたっぽい文字列がどばーっと書かれてます。人によって違うのかは分からないけど、僕の場合は『ホスト名,IPアドレス ssh-dss よく分かんない文字列』みたいな感じになってます。ホスト名は書いてないときもあるね。SSHで『ユーザー名@IPアドレス』で接続しているやつなんかがそう。

このよく分かんない文字列が、何だろ……暗号化されたパスワードみたいな感じ? で良いのかな。もし公開鍵を新しいものに変えたりした場合は、この暗号化された部分が前の鍵じゃないと照合できないような状態になってるので、ここを削除して、もっかい登録し直せば良い。

known_hostsの該当部分を削除するっていうやり方自体は、Windowsでも同じだと思うんだよね……これも今度やってみるか。



おまけ

公開鍵を使ってSSH接続するとき、こんなエラーが出ることがある。

//SSHコマンド
$ ssh -i SSH鍵のパス ユーザー@ホスト名

//エラー内容
WARNING: UNPROTECTED PRIVATE KEY FILE!

何か鍵ファイルにプロテクトがかかってねーぞみたいなエラーですね。こういうときはファイルのパーミッションに問題があるはずなので、パーミッションを600に変更する。

$ chmod 600 鍵ファイル

プロテクトは大事ですからね。もしKEYのキャラクターたちのアレな画像を大量に収集したフォルダがあったら、ちゃんとプロテクトをかけて誰にも見られないようにしとかないと、後々アレなことになるかもしれないからね。一度でも見られちゃったら、もうアレよ。あれよあれよという間にアレよ。






エラーとは言ってもwarningですからね。慌てるこたぁねーです。落ち着いて対処すりゃすぐに何とかなる。

でももしパソコンに大量のエロ画像とかエロ動画が入っていて、それが流出しそうになったら、慌てた方が良いかもしんない。落ち着いてる場合ではないかもしんない。さすがの秋子さんでも、その不祥事は了承しきれないかもしんない。
 もしかしたら何か関連しているかも? 
 質問や感想などお気軽にコメントしてください