本記事は、個人情報を出さないように配慮して記述する。
以降、ドメイン名はexample.com、サーバーのローカルIPは192.168.2.100、ユーザー名はubuntuとして解説する。実際の値に置き換えて使う。
ゴール
- iPhone/PCの Termius から、外部ネットワーク経由で自宅の Ubuntuサーバー にSSH接続できるようにする。
- ルーターは ELECOM WRC-2533GST2 を想定。
- ポート22 を使った最もシンプルな構成を基本に、DDNS(MyDNS)を併用する構成も解説。
- セキュリティとトラブル対処までまとめる。
全体像(まず全手順を一望)
- Ubuntu側
- OpenSSH 有効化
- UFW(使っていれば)で22/tcp許可
- サーバーの NICのMACアドレス確認(DHCP予約で使う)
- ルーター(WRC-2533GST2)
- DHCP固定割り当て(予約):
192.168.2.100を常にサーバーへ - ポートフォワーディング:外部 22 → 内部
192.168.2.100:22を有効化
- DHCP固定割り当て(予約):
- DNS / DDNS(回線が動的IPなら特に重要)
- すでに
example.comが自宅回線のグローバルIPを指しているなら追加作業なし - 変動で切れるのを避けたいなら MyDNS + CNAME(
ssh.example.com→yourhost.mydns.jp) が安全
- すでに
- Termius
- ホストを作成(Address=
example.com, Port=22, User=ubuntu) - 推奨:公開鍵認証に切り替え
- ホストを作成(Address=
- 接続テスト & トラブル対応
- まずLAN内 → 次にモバイル回線から → ダメならチェックリストで切り分け
1. Ubuntu サーバーの準備
1-1. OpenSSH を入れて起動
sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl status ssh # active (running) になっていること
1-2. UFW(使っている場合)
sudo ufw allow 22/tcp
sudo ufw enable # すでに有効なら不要
sudo ufw status # 22/tcp ALLOW が並んでいること
1-3. 現在使っているインターフェースの確認(有線/無線)
ip route get 8.8.8.8
# 例: "dev wlan0 src 192.168.2.100 ..." なら Wi-Fi(wlan0)を使用中
MACアドレスは:
ip a
# 該当インターフェースの "link/ether xx:xx:xx:xx:xx:xx" がMAC
→ DHCP固定割り当てでこのMACを使う。
2. ルーター(WRC-2533GST2)の設定
2-1. DHCP固定割り当て(予約)
- ブラウザでルーター管理画面(例:
http://192.168.2.1)にログイン - 詳細設定モード → LAN設定 → DHCPサーバー設定
- **固定割当(予約)**を有効化してエントリ追加:
- MACアドレス:サーバーのNIC(有線なら
eth0、Wi-Fiならwlan0等)のMAC - IPアドレス:
192.168.2.100(例) - ホスト名:任意
- MACアドレス:サーバーのNIC(有線なら
- 保存 → 反映(必要なら再起動)
目的:サーバーが再起動しても 常に同じローカルIP を使えるようにする。
2-2. ポートフォワーディング(NAT)
- 詳細設定 → ポートフォワーディング
- 画面が「単一ポート転送」の簡易フォームなら、以下を追加:
- 有効:ON
- ローカルIPアドレス:
192.168.2.100 - タイプ:
tcp - ポート:
22 - コメント:
SSH(任意)
→ 追加 → 適用
画面仕様上「外部→内部で番号を変換できない」場合がある。今回はサーバーも外部も22固定なので問題ない。
3. DNS / DDNS の考え方と実装
3-1. すでに example.com が自宅IPを指している場合
- そのまま SSHも
example.comに接続 すればよい。 - ただし 動的IP回線 だと、IPが変わったタイミングで繋がらなくなる。
3-2. 動的IP回線で切断を避けたい(おすすめ構成)
- MyDNSで
yourhost.mydns.jpを取得(Ubuntuにddclientを入れて自動更新) - ドメイン管理(レジストラ)のDNSで CNAME を設定:
ssh.example.com CNAME yourhost.mydns.jp.
- 以後のSSHは
ssh.example.comを使う:ssh ubuntu@ssh.example.com # デフォルト22番
メリット:Webの
www.example.com等の既存設定に影響を与えず、SSHだけ常に最新IPに追随できる。
3-3. MyDNSをゾーン管理者にする(ドメイン全体を動的化)
- レジストラ側の ネームサーバー(NS)を
ns0.mydns.jp / ns1.mydns.jpに切替 ddclientでexample.comを直接更新- ドメイン全体が動的IPに追随する(WebもSSHも)
- 既存レコードも MyDNS側に再作成が必要になる点に注意
3-4. ddclient の設定例(Ubuntu)
sudo apt install -y ddclient
sudo nano /etc/ddclient.conf
例(MyDNS):
protocol=mydns
use=web, web=checkip.amazonaws.com/, web-skip='Current IP Address:'
server=www.mydns.jp
login=YOUR_MYDNS_ID
password='YOUR_MYDNS_PASSWORD'
yourhost.mydns.jp
サービス起動:
sudo systemctl enable ddclient
sudo systemctl restart ddclient
sudo systemctl status ddclient
4. Termius の設定
4-1. ホスト登録(パスワード方式でもまずはOK)
- Label:任意(例:Ubuntu Server)
- Address:
example.com(またはssh.example.com) - Port:
22 - Username:
ubuntu - Password:初期はパスワードでも可(のちに鍵認証へ)
4-2. 公開鍵認証(推奨)
- Termius → Keychain で 鍵ペアを生成(New Key → Generate)
- 公開鍵をコピー → サーバーに登録:
mkdir -p ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys # 公開鍵をペースト chmod 600 ~/.ssh/authorized_keys - Termiusのホスト設定 → SSH → Key に生成した鍵を紐付け
- 将来的には
/etc/ssh/sshd_configでパスワードログイン無効も可:PasswordAuthentication no変更時は別セッションを開いたままsudo systemctl restart sshで適用(閉め出し防止)
5. 接続テストの順番
- LAN内から(同一Wi-Fi)
ssh ubuntu@192.168.2.100 - モバイル回線から(NATループバック不安定対策)
ssh ubuntu@example.com既定で22なので-pは不要(2222等を使うときのみ-p)
6. 困ったときのチェックリスト(確実に直る順)
- SSHデーモン起動
sudo systemctl status ssh # active (running)? - UFW で 22/tcp 許可済みか
sudo ufw status - LAN内接続 は通るか
ssh ubuntu@192.168.2.100 - ポートフォワーディング 正しいか
- 宛先IP:
192.168.2.100 - プロトコル:TCP
- ポート:22
- 有効になっているか
- 宛先IP:
- DNSが今の回線を指しているか
dig example.com +short curl ifconfig.me # 両者が一致していればOK - CGNAT / ISP制限 の疑い
- 到達すらしない(タイムアウト):CGNATの可能性
- 回避策:固定IP/IPv4オプション、Cloudflare Tunnel / Tailscale / Zerotier の検討
「Connection refused」は「宛先には届いたが拒否された」=SSHが停止/拒否のサイン。
「タイムアウト」は「届いていない」=ルーター/ISP側の問題のサイン。
7. セキュリティ強化のベストプラクティス
- 公開鍵認証(パスワード無効化)
- fail2ban で総当たり防御
sudo apt install -y fail2ban - 必要なら ポート変更(外部だけ変えるケースも多い)
- 例:外部2222 → 内部22(ルーターで変換)
- 接続:
ssh -p 2222 ubuntu@example.com
- 定期アップデート と バックアップ
8. 例:運用パターン早見表
| 回線 | DNS 方式 | 接続先(Termius Address) | 備考 |
|---|---|---|---|
| 固定IP | Aレコード固定 | example.com | 変更なしで安定 |
| 動的IP(既存運用を変えたくない) | CNAME(ssh.example.com → yourhost.mydns.jp) | ssh.example.com | Web等に非干渉でSSHだけ動的追随 |
| 動的IP(ドメイン丸ごと動的化) | NSをMyDNSへ | example.com | 既存レコードはMyDNS側で再設定必須 |
9. 仕上げの一言
- 最初は「外部も内部も22」のシンプル構成で確実に接続を通す。
- 接続が安定したら、鍵認証→パスワード無効→fail2ban の順で硬くする。
- 回線が 動的IP なら、MyDNS + CNAME でSSH用サブドメインを動的追随させるのが安全・無難。

コメント