SSHについて

前の現場で携わってた時の業務内容について お話をします。 SSHの鍵交換という作業をやっておりました。

SSHとは

ネットワークを経由して他のコンピュータ(主にサーバ)に接続し、遠隔操作するための仕組みです。通信途中の情報は全部暗号化されます。telnetと比較すると暗号化されないのでSSHの方が安全です。

Telnetの強化版と言いましょうか。 簡単にtelnetの説明をすると、ほかのコンピュータを遠隔操作するための仕組みです。

私がやっていた作業をざっくり説明すると、お客様から「AサーバとBサーバをSSHで鍵交換したいから設定してください」という依頼がきます。 その依頼を受けて、Aサーバ側の鍵を作成して、Bサーバにその鍵を配置してあげ、指定のファイルに鍵情報を記載して、疎通確認をします。

以前の現場でも他の現場でも必ずといっていいほど出てくるエラーがありますので、一つ教えます。

以下、SSHでAサーバからBサーバに繋いだ時のエラーです。

$ ssh example.com @@@@@@@@@@@@@@@@@@ @ 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 a host key has just been changed. The fingerprint for the RSA key sent by the remote host is :::::::::::::::. Please contact your system administrator. Add correct host key in /Users/hnw/.ssh/known_hosts to get rid of this message. Offending RSA key in /Users/hnw/.ssh/known_hosts:133 RSA host key for example.com has changed and you have requested strict checking. Host key verification failed.

このエラーが出たら、サーバ側のホスト鍵が古いんだなと思ってください。

説明すると、AサーバからBサーバに初めて接続する際に 「ホスト鍵を登録しますか?しませんか?」と聞かれます。そこでyesと入力すればAサーバにBサーバのホスト鍵情報が、known_hostsファイルというものに保存され接続が可能となります。

上記のエラーは、Bサーバを作り直したり、OS再インストール等をすると、ホスト鍵が作り直されます。 サーバ構築の現場だと、サーバの作り直し等 頻繁にあるのでお気をつけください。

このエラーを直すには、Aサーバ側のknown_hostsファイルに記載されているBサーバのホスト鍵情報を削除してあげればよいです。 当然ですが、削除する際にはknown_hostsのバックアップは取ってください。 known_hostsには、別サーバのホスト鍵情報もあるので誤って削除することもあります。 いつでも古いものに戻せるようにしておく必要があります。

削除後、再度接続をすると初めて接続する際の「ホスト鍵を登録しますか?しませんか?」が表示されるので、yesと入力すれば新しいBサーバのホスト鍵情報が登録され接続可能となります。 Bサーバ側に置いたAサーバ側の鍵もあるか確認する必要があります。

今回伝えたエラーは、どこの現場でも出ますので、覚えておくと結構助かります。 SSHの鍵交換について詳しく知りたい場合は、ググれば沢山でてくるので調べてみてください。

山神と申します。

日々勉強、日々精進、日々向上

※記事の内容は保証はしておりません(執筆時期や実施環境により挙動が変わるものがある為)。
別途検証してご利用いただくことをおすすめいたします。