Oracle Cloud 上の仮想マシンへSSH接続するポート番号を変更する手順

公開日:2019/09/24 更新日:2019/09/24
Oracle Cloud 上の仮想マシンへSSH接続するポート番号を変更する手順のサムネイル

はじめに

Oracle Cloudで作成した仮想マシンへのSSH接続に使用するポート番号をデフォルトのポート番号22から任意のポート番号に変更したのでその手順をまとめます。

前提と環境

以下の通りとします。OSはデフォルトのOracle Linuxではなく、Ubuntuとなります。

  • OS : Ubuntu 18.04

手順概要

必要な作業は、以下の2つになります。

  • 仮想ネットワークの設定を変更する
  • 仮想マシンのSSH設定を変更する
  • 仮想マシンのファイアウォール設定を変更する

仮想ネットワークの設定を変更する

はじめに、Oracle Cloudの仮想マシンが属する仮想ネットワークの設定を変更する必要があります。具体的には、仮想ネットワークのルールリストを編集し、SSH接続に使用したいポート番号(ここでは、10022とする)を許可するよう変更します。この変更を実施するには、まず以下のように作成済のインスタンス(仮想マシン)の詳細画面に移動し、「サブネット」のリンク部分をクリックします。

instance-subnet.png

インスタンスの「サブネット」をクリックすると、以下のようにインスタンスが属する仮想ネットワークが表示されます。ここで仮想ネットワーク内のサブネットが以下画像内の赤線枠内に表示されているのでこれをクリックします。

your-subnet.png

以下のようにサブネットの詳細が表示され、その中に「セキュリティ・リスト」があるのでこれをクリックします。

security-list.png

以下のように「イングレス・ルール」(入ってくるトラフィックに対するルール)という項目があり、そこにポート番号22について許可しているルールがあります。そのルールに以下のようにチェックを入れて、「編集」をクリックします。

edit-ingress-rules.png

「編集」をクリックすると、以下のようにルールの編集ウィンドウが開くので、ここでポート番号を以下のように10022(各自使用したいポート番号を入力)を入力して「変更の保存」をクリックします。

edit-window.png

以上で仮想ネットワークの設定の変更が完了です。

仮想マシンの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番を開けたい場合などにもほとんど同様の手順で進められると思います。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。