SSHで外部からRaspberryPiのサーバーに入り、内部LAN内にある別のRaspberryPiを操作

外部から内部LANの特定のRaspberry Pi(以降、ラズパイA)にSSH接続し、そこを「踏み台」にして内部ネットワーク内にある別のRaspberry Pi(ラズパイB)にSSHログインすることで、問題なく操作できます。

この手法は「多段SSH(SSHの多段接続)」と呼ばれ、セキュリティを保ちつつネットワーク内部へ安全にアクセスする標準的な方法です。具体的な手順と実現方法は以下の通りです。

1. 接続の全体像

  • ラズパイA(踏み台サーバー): 外部からSSHアクセスが可能なラズパイ(ルーターのポート開放や、VPN/トンネリングツールを利用)。
  • ラズパイB(目的のラズパイ): 内部LANにのみ存在し、外部から直接は見えないラズパイ。
  • クライアント: あなたが今操作しているPC(外出先や自宅外)。

2. 多段SSHのやり方
(コマンド一発で繋ぐ方法)

クライアントのPC(MacやLinuxなど)のターミナルから、以下のコマンドを実行することで、ラズパイAを経由してラズパイBに一発でログインできます。

bash

コードは注意してご使用ください。

【使用例】

  • ラズパイAのアドレス: 192.168.1.100(外部向けグローバルIPやDDNS)
  • ラズパイAのユーザー名: pi
  • ラズパイBのローカルIP: 192.168.1.50
  • ラズパイBのユーザー名: pi

bash

-Jオプション(ProxyJump)は、OpenSSH 7.3以降で利用可能です。


3. 事前準備・必須条件

この操作を行うためには、以下の条件をクリアしている必要があります。

  1. ラズパイAへの外部アクセス手段
    外部からラズパイAに接続するための入り口が必要です。以下のいずれかの方法を設定します。
    • ルーターのポート開放(SSHの22番ポートなど)
    • VPN(WireGuardやTailscaleなど)の使用
    • リバースプロキシやトンネリングサービス(Ngrok や Cloudflare Tunnel など)の利用
  2. ラズパイAとラズパイBが同じネットワーク(LAN)内にあること
  3. ラズパイBのIPアドレスが固定されていること
    DHCP(動的割り当て)の場合、IPアドレスが変わってしまうことがあるため、ラズパイBは固定IPにしておくと便利です。

4. 便利技:SSH設定ファイル(config)の活用

毎回長いコマンドを打つのが面倒な場合や、コマンドでの設定が複雑な場合は、クライアントPCの ~/.ssh/config ファイルに接続設定を登録しておくことで、短いコマンドでアクセスできるようになります。

設定ファイルの記述例:

text

この設定をしておくと、PCのターミナルで ssh raspberryB と入力するだけで、自動的にラズパイAを経由してラズパイBにログインできます。

MobaXermで具体的に接続する方法

MobaXtermを使用する場合、先ほど解説した config テキストファイルを手動で書く必要はありません。グラフィカルな設定画面(GUI)に入力するだけで、自動的に多段SSH(MobaXterm内では「SSH Gateway」と呼びます)が構成されます。

具体的な設定手順を3ステップで詳しく解説します。


ステップ1:踏み台(ラズパイA)のセッションを作成する

まず、外部からアクセスできるラズパイAへの接続設定を作ります。

  1. MobaXtermを起動し、左上の [Session] ボタンをクリックします。
  2. セッションの種類で [SSH] を選択します。
  3. Basic SSH settings を入力します。
    • Remote host: ラズパイAの外部IPアドレス、またはドメイン名
    • Specify username: チェックを入れて、ラズパイAのユーザー名(例: pi)を入力
    • Port: ラズパイAのSSHポート(通常は 22
  4. 一番下の [OK] を押して一度保存します(これでラズパイA単体の接続が左側のリストに登録されます)。

ステップ2:目的のサーバー(ラズパイB)のセッションを作成する

次に、本命である内部LANのラズパイBへの接続設定を作ります。ここが多段SSHの肝になります。

  1. 再度、左上の [Session] ボタン ➔ [SSH] をクリックします。
  2. Basic SSH settings に「ラズパイB」の情報を入力します。
    • Remote host: ラズパイBの内部LANでのIPアドレス(例: 192.168.1.50
    • Specify username: チェックを入れて、ラズパイBのユーザー名
    • Port: 22

ステップ3:踏み台(Gateway)の設定を組み込む

ラズパイBの画面を開いたまま、少し下にあるタブを操作します。

  1. 中央にある [Network settings] タブをクリックします。
  2. 中ほどにある [SSH gateway (jump host)] ボタンをクリックします。
  3. ポップアップ窓(SSH gateway configuration)が表示されるので、ここにラズパイA(踏み台)の情報を入力します。
    • Gateway host: ラズパイAの外部IPアドレス、またはドメイン名
    • Username: ラズパイAのユーザー名
    • Port: ラズパイAのSSHポート(通常は 22
  4. 入力できたら [OK] を押してポップアップを閉じます。
  5. 元のセッション画面の下部にある [Bookmark settings] タブを開き、Session name を「RaspberryPi-B (経由)」など分かりやすい名前に変更します。
  6. 最後に右下の [OK] ボタンを押して保存します。

接続のテスト

設定が完了すると、MobaXtermの左側の「User sessions」リストに、今作成したラズパイBのセッション(あだ名)が表示されます。

これをダブルクリックすると、MobaXtermが自動的に「ラズパイAに接続(認証)➔ そのトンネルを通ってラズパイBに接続」という処理を裏で行ってくれます。

画面の指示に従ってそれぞれのパスワードを入力(または鍵を選択)すれば、外部からLAN内のラズパイBの操作画面に一発で到達できます。

zero

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です