利用 reverse ssh tunnel 實現防火牆背後主機的連線

當防火牆後面的主機不允許開放 ssh port 時,可透過此技術來達到目的,需要額外準備一台主機。

MarsMars閱讀 2 分鐘
利用 reverse ssh tunnel 實現防火牆背後主機的連線

目的:假設防火牆後的主機 A 不開放 ssh ,想透過你的電腦 ssh 到主機 A

準備一台主機 B,且讓主機 A 和你的電腦都可以 ssh 到主機 B 上

步驟一

在主機 A 上輸入

ssh -NR 8888:localhost:22 apps@1.1.1.1
  1. 8888 必須是任何不被使用中的 port
  2. localhost 這裡不用改
  3. 22 則是 ssh 的 port
  4. apps 是登入主機 B 的 user name
  5. 1.1.1.1是主機 B 的 IP

輸入後就會掛著了


步驟二

從你的電腦 ssh 到主機 B,然後在主機 B 上輸入

ssh user@localhost -p 8888
  1. user 是主機 A 上的 user name
  2. localhost 這裡不用改
  3. 8888 則是你在步驟一的 8888
  4. 輸入後會詢問登入密碼,只要輸入主機 A 上 user 的密碼即可


疑難排解

假如沒有出現密碼詢問,而是拒絕登入的話,有可能是主機 B 上沒有開啟接受以輸入密碼方式 ssh 的設定(AWS EC2 的主機預設都是沒開啟密碼登入的)

在主機 B 上打開 

/etc/ssh/sshd_config

然後把以下設定改為 yes

PasswordAuthentication yes

重啟 ssh

service ssh restart

就可以了

Mars
關於作者Mars自由接案工程師 | Ruby on Rails

自由接案者、Ruby on Rails 工程師、水肺潛水員、業餘羽球、二胡、鋼琴愛好者。喜歡貓、狗。

延伸閱讀