從 IntelliJ 透過工作 ssh 隧道連接到連接埠?

從 IntelliJ 透過工作 ssh 隧道連接到連接埠?

我正在開發一個駐留在遠端 Ubuntu 14.x 伺服器上的伺服器應用程式。該應用程式正在監聽遠端盒子上的連接埠 8000。我有一個正確的 SSH 會話,因此我通過隧道進入了盒子,我還具有 sudo 功能。

我辦公室的本機 Linux 系統上有 IntelliJ,它也運行 ubuntu 14.x。我需要將其連接到遠端機器上的連接埠 8000 以進行 IntelliJ 遠端偵錯會話。遠端盒子上的連接埠 8080 不可公開使用。

是否有實用程式或 IP 表技巧(在遠端盒子上)或 SSH 技巧等可以在我的系統上提供一個本地端口供 IntelliJ 連接,然後透過該連接埠代理/轉送來自該連接埠的流量到遠端系統上連接埠8000的SSH 隧道?換句話說,它會讓本地機器上的 IntelliJ 認為它正在直接與遠端機器上的伺服器應用程式通信,而實際上它們之間的連接是透過活動的 SSH 隧道進行的?

我記得很久以前做過類似的事情,但我完全忘記瞭如何做,當時遠端客戶端是一個 Windows 盒子,所以解決方案是針對 Windows 系統的。這次本地系統和遠端系統都是Ubuntu 14.x伺服器。

答案1

在本機上設定轉送隧道

autossh -f -N -L 0.0.0.0:8000:localhost:8000 username@remotebox

0.0.0.0:8000是 IntelliJ 將連接的內容,它會認為 Web 應用程式在本機電腦上運行,綁定到每個本機介面並在連接埠 8000 上運行。

localhost:8000是在遠端盒子的上下文中隧道將連接到的位置。localhost不再是localhost您正在處理的介面,而是localhostRemotebox 機器內部的介面。在那裡它將從用戶的上下文連接到連接埠 8000,該連接埠實際上是您的 Web 應用程式username

autossh是一個包裝器ssh,如果連接斷開,它會自動重新連接。

如果您在遠端主機上使用非標準 ssh 端口,請使用該-P <PORT>參數連接到它。

如果上面的內容沒有達到您想要的效果,那麼這個答案值得一看:https://unix.stackexchange.com/a/118650/61956 從那裡我剛剛向您解釋了第一個圖表。我在本地連接埠前面加上了 interface 前綴0.0.0.0,我認為當你省略它時它是預設的localhost,如果你願意的話你可以這樣做。刪除該0.0.0.0:部分可能會更安全,因為如果localhost是預設設置,那麼網路上的任何人都無法使用您的電腦來使用該 ssh 隧道。否則,如果是您正在使用的電腦的 IP,則它們192.168.10.10:8000將是遠端 Web 應用程式的入口點。192.168.10.10

相關內容