約束の地

キャロ組

SSHトンネルを用いて、インターネットからアクセスできないマシンにログインする

結論

いわゆるSSHトンネリングをすればいいです。

「A」をインターネットからはアクセスできないマシン(しかしインターネットに向かっては出ていける)とし、「B」はインターネットからSSH可能なマシンとします*1

このとき、「A」→「B」とつなぐことはもちろん可能です*2。それに加え、「B」→「A」とできるようにしましょうということです。

具体的方法

1. 「A」→「B」につなぐ

まず「A」から「B」に SSH でつなぎます。その際に -R オプションをつけます。具体的には次の記述となります。

$ ssh -R 12345:localhost:22 yourname@yourhost.jp
  • -R オプションはトンネリングするのに必要です
  • 12345:localhost:22 の部分については次のとおりです
    • 12345 は「B」側で待ち受けるポート番号です
      • 「B」で空いている番号なら何でもいいでしょう
    • 22 は「A」側で待ち受けるポート番号です
      • デフォルトなら 22 です
    • yourname@yourhost.jp の部分(とそれ以降の部分)は ssh コマンドを普通に実行したときと同じ記述です
      • 鍵の指定なども行えます

2. 「B」→「A」の接続を確認する

「1.」ができたら、「B」側から「B」→「A」の接続を確認します。方法は簡単です。以下のコマンドを実行します。

$ ssh localhost -p 12345

これで、「B」から「A」に接続できたと思います。

補足

  • 永続的に繋げる場合は -f-n などのオプションも使うとよいと思います
  • タイムアウトが起こりますので、何らかの方法で接続を維持させましょう
    • こちらのページがとても詳しいです(感謝)

*1:VPS や クラウド でしょうか

*2:インターネットに向かっては出ていける

Powered by はてなブログ