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

コマンドのみの結論

ポイントは -R を用いることです。

$ ssh -f -N -R 12345:localhost:22 username@hostname -i hoge.pem

結論

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

「A」をインターネットからはアクセスできないマシン(インターネットへのアクセスはできる)とし、「Z」はインターネットからSSH可能なマシンとします。

このとき、「Z」→「A」に SSH できるようにします。

具体的方法

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

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

$ ssh -f -N -R 12345:localhost:22 username@hostname -i hoge.pem
  • 12345:localhost:22 の部分については次のとおりです
    • 12345 は「Z」のマシンのポート番号です
      • 「A」へつなげるためのポート番号です
      • 「Z」にログインしている状態で localhost:12345 にアクセスしたときにA側につなげられる、という意味です
    • 22 は「A」側で待ち受けるポート番号です
      • 「『A』の SSH サーバの待受ポート番号」に他なりません
    • username@hostname -i hoge.pem の部分は ssh コマンドを普通に実行したときと同じ記述です

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

「1.」ができたら、「Z」側から「Z」→「A」の接続を確認します。

$ ssh username@localhost -p 12345 -i kagi.pem

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

補足

普通の SSH 接続と同様に ~/.ssh/config に記述をすることで一部の箇所ではタイピングを減らすことが可能です。

参考

Powered by はてなブログ