コマンドのみの結論
ポイントは -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
に記述をすることで一部の箇所ではタイピングを減らすことが可能です。