自分にやさしく学ぶプログラミング

プログラミング学習記録、備忘録

sshの設定ファイルはクライアント用とサーバー用があるので気をつけようという話

レンタルサーバーを契約して、リモートホストにログインする方法を学びました。
その際、勘違いからsshの設定にめちゃくちゃ手こずったという話です。

前提条件

クライアント:MacBook Air / macOS Mojave 10.14.5
サーバー:さくらVPS / Debian 9.9
双方sshをインストールして、鍵認証も済ませた状態

問題:ポート番号が変更できない

リモートアクセス時のポート番号は22がデフォルトとなっていますが、このままにしておくと悪意あるロボットのアクセスを許してしまう場合があるため、ポート番号を変更しようとしました。 その際の手順は下記の通り。

  1. サーバー側で /etc/ssh/ssh_config の中のPortフィールドの値を、22から別の値に変更
  2. サーバー側で sudo /etc/init.d/ssh restartを実行

かんたーんと思って意気揚々とクライアント側からssh -p [設定したポート番号] [サーバーのアドレス]するも、繋がらない・・・。
試しに、ssh [サーバーのアドレス]してみると繋がる。
つまりポート番号が変更されていない!

結論:編集する設定ファイルを間違えていた

/etc/ssh/ssh_configは、クライアント用の設定ファイル。
今回はサーバー側の設定を変えたかったので、編集すべきは/etc/ssh/sshd_configです。 こちらを編集したら問題なくポート変更できました。 ちょっと恥ずかしい。。。
ちなみに、クライアント側の設定ファイルでポート番号を変えると、sshで-p オプションを設定しなかった場合のポート番号が変更される模様。

補足:/etc/default/ssh というのもあった

試行錯誤している中で、/etc/default/ssh というファイルを見つけました。こいつの中のSSHD_OPTS=の後に、"Port [適当な番号]"と書き足してみたところ、これでもポート番号が変更できました。
設定ファイルの中で読み込まれるものらしいのですが、どんな風に使うのが本来の思想なのかは不明。