OCI Compute Instance の SSH 接続ポートを変更する

OCI の Compute Instance、具体的には Always Free の Oracle Linux 7 において、通常22番ポートで接続する SSH を、別のポートで接続できるようにする。

結論からいうと、以前書いた以下の記事 (GCE 向けの記事) と全く同じ方法で実現できた。CentOS 向けのやり方を参考にすれば大丈夫そうだ。

一応、順に手順を紹介する。

OCI で変更後のポートの Ingress Rule を設定しておく

今回の例では 10022 番ポートで SSH 接続できるように変更する予定なので、予め OCI 管理コンソールより、Security List を編集して 10022 番ポートへのアクセスを許可するよう Ingress Rule を設定しておく。

現状の Ingress Rule は、変更前である 22 番ポートへのアクセス許可と、上で新たに追加した 10022 番ポートへのアクセス許可の、2つのルールがある状態にしよう。

OCI Compute Instance で設定開始

OCI Compute Instnace に22番ポートで SSH 接続し、次のように設定を開始する。

# ファイアウォールを無効化する
$ sudo systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

# 以下のファイルを編集し SELinux を無効化する
$ sudo vi /etc/selinux/config
# 'SELINUX=enforcing' の行を 'SELINUX=disabled' と変更する

# 設定を確認する
$ sudo systemctl is-enabled firewalld
disabled

$ sudo getenforce
Enforcing

# Enforcing と出ていたら、インスタンスを再起動する

# 以下のように Disabled になっていることを確認する
$ sudo getenforce
Disabled

# ポート番号を変更する
$ sudo vi /etc/ssh/sshd_config
# '#Port 22' のコメント行をアンコメントし 'Port 10022' と変更する

# sshd を再起動する
$ sudo systemctl restart sshd

# 設定を確認・10022ポートをリッスンしていることが分かる
$ systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-01-28 07:17:41 GMT; 3s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 18326 (sshd)
    Tasks: 1
   Memory: 1.3M
   CGroup: /system.slice/sshd.service
           └─18326 /usr/sbin/sshd -D

Jan 28 07:17:41 neos-compute systemd[1]: Starting OpenSSH server daemon...
Jan 28 07:17:41 neos-compute sshd[18326]: Server listening on 0.0.0.0 port 10022.
Jan 28 07:17:41 neos-compute sshd[18326]: Server listening on :: port 10022.
Jan 28 07:17:41 neos-compute systemd[1]: Started OpenSSH server daemon.

ココまで出来たら、インスタンスを再起動する。反映までは5〜10分くらいかかるっぽいので、繋がらないように見えても焦らない。

インスタンスを再機動したら、以下のように変更後のポート番号を指定して SSH 接続してみる。

# ポート番号を指定して SSH 接続する
$ ssh -i ~/.ssh/my_oci_vm -p 10022 opc@【Public IP】

~/.ssh/config でポート番号を指定するなら以下のように記述する。

Host my_oci_vm
  HostName      【Public IP】
  Port          10022
  User          opc
  IdentityFile  ~/.ssh/my_oci_vm

コレで無事アクセスできれば成功。

22番ポートへのアクセスを許可する Ingress Rule を削除する

変更後のポートへのアクセス許可ルールを追加したのと同じ要領で、22番ポートへのアクセスを許可する Ingress Rule を、Security List から削除しておく。

以上

コレで SSH のポートを変更できた。良き良き。