SSH のポートを変更する - ConoHa で KUSANAGI その3
今回は SSH のポート番号を 22番から別の番号へ変更します。
ポート番号は 61000 以下の数字を適当に決めれば良いと思います。若い番号だと指定済みのほかのサービスと被ることがあります。不安な方は「TCPやUDPにおけるポート番号の一覧 - Wikipedia」でもみて番号がかぶってないか確認してみてください。
ここでは、55555番へ変更することにします。
root アカウントでサーバーに接続して作業を行います。
sshd の設定ファイルを変更する
sshd の設定ファイルを以下の要領で変更し保存後、SSHD を再起動します。
vim /etc/ssh/sshd_config #Port 22 ←コメントを外し、さらに次の行にポート番号を追加する ↓ Port 22 Port 55555 #Protocol 2 ←コメントを外す ↓ Protocol 2 #PermitRootLogin yes #rootログイン禁止 ↓ PermitRootLogin no #PubkeyAuthentication yes #公開鍵接続可能にする(ConoHaの設定であらかじめ コメントがはずれていると思います。しかも2行あったりするので、1つは削除する。) ↓ PubkeyAuthentication yes PasswordAuthentication yes #パスワードログインを禁止 ↓ PasswordAuthentication no #SSH再起動 systemctl restart sshd.service
これで、root での ssh ログインができなくなります。また、公開鍵接続以外での SSH ログインもできなくなります。
新しいポート 55555 を設定しましたが、55555 で接続ができることを確認するまで、22番は残しておきます。22番と55555番の両方を書いておけば、両方ともアクセスできます。
なお、この時に設定をミスして接続ができなくなってしまっても ConoHa の管理画面のコンソール経由なら、root でパスワードログインすることができます。
ConoHa がイメージをインストールするときに気を利かせたのだと思いますが、PubkeyAuthentication yes など複数のパラメータが重複して設定されてしまっているようです。
同じことが2行書いてあっても問題なく動きますが、気持ち悪いので重複したコードが書かれている行は削除してお掃除してしまいましょう。
このあと、作業用ユーザーで接続の確認を行いますが、万が一うまく接続できなくなった時を考えて、現在接続している root アカウントのターミナルは接続したままにしておきます。
作業用ユーザーでログイン確認
接続している root アカウントのターミナルとは別プロセスで、作業用ユーザーで SSH 接続をしてみます。
このとき、ポートは新しく設定した 55555 を指定します。また、前回作成した秘密鍵を使用して接続します。
ご参考までにテラタームマクロは以下のとおりです。このマクロでは、作業用ユーザーでログインしたら自動的に su - コマンドを打って root に成り上がるようにしています。複数人でサーバー管理している場合は、su - はやめて sudo しましょう。
拡張子 .ttl にして保存して利用できます。例によってマクロファイルと秘密鍵は同じディレクトリに保存し、また、TeraTermLog という空のディレクトリを作っておいて下さい。
※公開鍵にパスフレーズを設定した場合
getdir MACRODIR HOSTADDR = '987.654.321.098' USERNAME = 'tsuyoshi' PASSWORD = '秘密鍵のパスフレーズ' ROOTPASS = 'root アカウントのパスワード' KEY_FILE = MACRODIR strconcat KEY_FILE '\tsuyoshiの秘密鍵.pem' PORTNUM = '55555' LOGDIR = MACRODIR strconcat LOGDIR '\TeraTermLog\' COMMAND = HOSTADDR strconcat COMMAND ':' strconcat COMMAND PORTNUM strconcat COMMAND ' /ssh /2 /auth=publickey /user=' strconcat COMMAND USERNAME strconcat COMMAND ' /passwd=' strconcat COMMAND PASSWORD strconcat COMMAND ' /keyfile=' strconcat COMMAND '"' strconcat COMMAND KEY_FILE strconcat COMMAND '"' connect COMMAND LOGFILE = LOGDIR strconcat LOGFILE USERNAME strconcat LOGFILE '@' strconcat LOGFILE HOSTADDR getdate DATETIME '-%Y%m%d-%H%M%S' strconcat LOGFILE DATETIME strconcat LOGFILE '.log' logopen LOGFILE 0 1 timeout = 10 wait '$' '#' if result = 0 end sendln 'su -' wait ':' sendln ROOTPASS end
※公開鍵にパスフレーズを設定していない場合
getdir MACRODIR HOSTADDR = '987.654.321.098' USERNAME = 'tsuyoshi' ROOTPASS = 'root アカウントのパスワード' KEY_FILE = MACRODIR strconcat KEY_FILE '\tsuyoshiの秘密鍵.pem' PORTNUM = '55555' LOGDIR = MACRODIR strconcat LOGDIR '\TeraTermLog\' COMMAND = HOSTADDR strconcat COMMAND ':' strconcat COMMAND PORTNUM strconcat COMMAND ' /ssh /2 /auth=publickey /user=' strconcat COMMAND USERNAME strconcat COMMAND ' /keyfile=' strconcat COMMAND '"' strconcat COMMAND KEY_FILE strconcat COMMAND '"' connect COMMAND LOGFILE = LOGDIR strconcat LOGFILE USERNAME strconcat LOGFILE '@' strconcat LOGFILE HOSTADDR getdate DATETIME '-%Y%m%d-%H%M%S' strconcat LOGFILE DATETIME strconcat LOGFILE '.log' logopen LOGFILE 0 1 timeout = 10 wait '$' '#' if result = 0 end sendln 'su -' wait ':' sendln ROOTPASS end
接続が確認できたら、sshd の設定ファイルの port 22 をコメントアウトし sshd を再起動しましょう。
vim /etc/ssh/sshd_config Port 22 #コメントアウトする ↓ # Port 22 #SSH再起動 systemctl restart sshd.service
これで開きっぱなしにしていた root ログインのターミナルは閉じてOKです。