94月/122

サーバー設定:SSHポートフォワーディングを行う

諸事情で、「とあるサーバーAを経由してサーバーBにアクセスしたい」という要望がでたので、SSHポートフォワードをうまく使えばいけるんじゃないかなぁ~と思って調べてみた。(そう言えば、自PCからポートフォワーディングをしたことはあったけど、自分で(サーバー側の)SSHポートフォワードの設定をやったことはなかったな)

[結論]
以下のコマンドを実行するだけでSSHポートフォワードが行え、上記要望を満たすことができる。

sshserver> ssh -g toserver -L localport:remoteserver:remoteport

[詳細]
例えば192.168.0.1上から以下のコマンド

192.168.0.1> ssh -g 10.0.0.1 -L 8022:10.0.0.1:22    ・・・ No.1
192.168.0.1> ssh -g 192.168.0.1 -L 8022:10.0.0.1:22  ・・・ No.2
192.168.0.1> ssh -g 192.168.0.2 -L 8022:10.0.0.1:22  ・・・ No.3

を実行した場合。
※10.0.0.1は外部のグローバルIPと仮定。

No.1 : 192.168.0.1から10.0.0.1へSSHのセッションが張られる
No.2 : 192.168.0.1から自分自身(192.168.0.1)へSSHのセッションが張られる。
No.3 : 192.168.0.1から192.168.0.2へSSHのセッションが張られる。

その後、クライアントPC(192.168.0.10)のSSH対応ターミナルソフトから192.168.0.1:8022へ接続すると、
No.1 : 192.168.0.10 -> 192.168.0.1:8022 -> 10.0.0.1:22
No.2 : 192.168.0.10 -> 192.168.0.1:8022 -> 192.168.0.1:22 -> 10.0.0.1:22
No.3 : 192.168.0.10 -> 192.168.0.1:8022 -> 192.168.0.2:22 -> 10.0.0.1:22
という経路で、10.0.0.1へログインすることができる。

10.0.0.1は、
No.1:192.168.0.1
No.2:192.168.0.1
No.3:192.168.0.2
からアクセスされているとみなしている。

[その他]
・192.168.0.1や192.168.0.2にポートフォワード用のユーザーを作成しなくてもよい。
->10.0.0.1にアカウントがあればよい。

・No.1の場合、192.168.0.1から10.0.0.1へのセッションが張りっぱなしになる。
->セキュリティ的に良くない。(異なるサーバー間で張りっぱなしは気持ち悪いので、No.3も該当するか)

・No.2とNo.3の場合は、クライアントPCから192.168.0.1:8022への接続タイミングで、10.0.0.1とセッションが張られる。

[考察]
ということで、ユーザーAからうちのグローバルサーバーを経由してユーザーBのグローバルサーバーへアクセスしてもらうには、No.2が理想か。
あと自宅(DHCP)からIDCへのアクセスもこれでいけるな。

Tags: ,

2 Responses to “サーバー設定:SSHポートフォワーディングを行う”

  1. utsuma より:

    myserver> ssh -N -f -A -t -g user@serverA -L 8022:serverB:22

  2. utsuma より:

    初期に記載した内容では、バックグラウンドで動作しなかったり、LISTENがlocalhostのみとかだったりするので、コメントNo.1の形式にした方がよい。

コメントを残す

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