はじめに
Oracle Cloudで作成した仮想マシンへのSSH接続に使用するポート番号をデフォルトのポート番号22から任意のポート番号に変更したのでその手順をまとめます。
前提と環境
以下の通りとします。OSはデフォルトのOracle Linuxではなく、Ubuntuとなります。
- OS : Ubuntu 18.04
手順概要
必要な作業は、以下の2つになります。
- 仮想ネットワークの設定を変更する
- 仮想マシンのSSH設定を変更する
- 仮想マシンのファイアウォール設定を変更する
仮想ネットワークの設定を変更する
はじめに、Oracle Cloudの仮想マシンが属する仮想ネットワークの設定を変更する必要があります。具体的には、仮想ネットワークのルールリストを編集し、SSH接続に使用したいポート番号(ここでは、10022とする)を許可するよう変更します。この変更を実施するには、まず以下のように作成済のインスタンス(仮想マシン)の詳細画面に移動し、「サブネット」のリンク部分をクリックします。
インスタンスの「サブネット」をクリックすると、以下のようにインスタンスが属する仮想ネットワークが表示されます。ここで仮想ネットワーク内のサブネットが以下画像内の赤線枠内に表示されているのでこれをクリックします。
以下のようにサブネットの詳細が表示され、その中に「セキュリティ・リスト」があるのでこれをクリックします。
以下のように「イングレス・ルール」(入ってくるトラフィックに対するルール)という項目があり、そこにポート番号22について許可しているルールがあります。そのルールに以下のようにチェックを入れて、「編集」をクリックします。
「編集」をクリックすると、以下のようにルールの編集ウィンドウが開くので、ここでポート番号を以下のように10022(各自使用したいポート番号を入力)を入力して「変更の保存」をクリックします。
以上で仮想ネットワークの設定の変更が完了です。
仮想マシンのSSH設定を変更する
後は作成した仮想マシンにログインし、SSHの設定ファイルを編集します。
$ sudo vi /etc/ssh/sshd_config
sshd_config
の以下の行を変更します。
/etc/ssh/sshd_config#(変更前)
# Port 22
# (変更後)
Port 10022
sshd_config
変更後は以下でsshを再起動して反映させます。なお、以下を実行しても現在ログイン中SSH接続は急に切断はされません。
$ sudo systemctl restart ssh
仮想マシンのファイアウォール設定を変更する
Oracle CloudでUbuntuの仮想マシンを作成すると、以下のようにiptablesのルールが自動で設定されています。
$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
25193 11M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
2790 286K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:123
2 120 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
3 180 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
(... 以下省略 ...)
上記のiptablesのルール内容は、/etc/iptables/rules.v4
に記述されていますので、これを編集してSSH接続で許可するポート番号を指定します。
$ sudo vi /etc/iptables/rules.v4
/etc/iptables/rules.v4
を開き、ポート番号が22番になっている箇所を10022に変更します。
/etc/iptables/rules.v4(...省略...)
-A INPUT -p udp --sport 123 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10022 -j ACCEPT # ここの22→10022 に変更する
-A INPUT -j REJECT --reject-with icmp-host-prohibited
(...省略...)
上書き保存後、以下でiptablesを再読込して完了です。
$ sudo /etc/init.d/netfilter-persistent reload
以上で各自のPCから設定したポート番号でSSH接続できると思います。
なお、Ubuntuではなく、CentOSやOracle Linuxを使用している場合は、firewall-cmd
を使用するようです。英語版となりますが、こちらの公式ドキュメントに記載されています。
まとめ
この記事では、SSH接続用のポート番号を変更する手順をまとめましたが、例えばWebサーバ用に80番を開けたい場合などにもほとんど同様の手順で進められると思います。
SPONSORED LINK
大変有益な情報をありがとうございます。
ただもう少し早くこちらのページを見つけられてたらと思いました。
sshd.configで待ち受けポート番号の変更はしたのですが、こちらにも書かれているようなiptablesの変更はしていなかったため二度とSSHで接続することができなくなり、完全に摘みました。。 他のクラウドサービス(GCE, AWS)と違いWeb管理画面の方でポートを開けておくだけではだめなのですね。。アカウントのパスワード設定もしておらずコンソール接続からもログインできない状態です。(泣
私の同様の経験があります。。ダメ元でOracleに問い合わせてみるのも1つかもしれません。。お力になれず申し訳ないです泣