外網設置Pycharm同步內網linux服務器進行遠程開發

Pycharm同步linux服務器進行遠程開發 這篇文章中,作者介紹了通過sftp來讓pycharm可以同步服務器的文件,還可以使用服務器的python解釋器,從而方便代碼的同步和調試。

然而很多服務器可能只有通過內網(例如校園網)甚至在局域網內纔可以通過ssh訪問。我所處的實驗室就是這種情況,只有一臺服務器有公網ip(假設是222.222.222.222,主機名和用戶名都爲alpha,密碼爲alphapw),其他幾臺服務器只有局域網ip(假設其中的一臺ip是192.168.0.100,主機名和用戶名都爲beta,密碼爲betapw),更難受的是,有公網ip的那個服務器也只能用校園網ip來訪問,非校園網無法訪問。

爲了在外網也能通過ssh訪問服務器,一個可行的辦法是先利用學校提供的vpn服務來獲得校內ip地址,然後就可以通過ssh訪問alpha了。如果想訪問其他服務器,例如beta,可以在使用ssh連接到alpha後,以alpha作爲中轉,再通過一次ssh來連接beta。

然而上面的做法是不能用於pycharm的項目同步部署功能的,反正我沒發現如何讓pycharm利用中轉來設置,所以我想了個其他辦法,參考了這篇文章:使用SSH隧道實現多層主機大穿越

最關鍵的步驟:建立SSH“中轉隧道”。

在windows下,到putty官網下載然後安裝putty,接着執行以下命令:

plink.exe -N -pw alphapw -L 127.0.0.1:12345:192.168.0.100:22 alpha@222.222.222.222

運行後,plink.exe不會退出,會一直運行纔可以使用這條“中轉隧道”。這時在你的電腦(127.0.0.1)上,將會建立起一個監聽端口12345,連接這個端口就相當於連接了beta服務器(192.168.0.100)的22端口。這時用打開另一個cmd,輸入ssh -p 12345 [email protected]即可與beta服務器建立ssh連接。在pycharm中,配置sftp服務器時的host填127.0.0.1,port填12345,即可配置本地項目與服務器同步。

注意事項:
1)最好事先用netstat -aon|findstr "12345"來查看是否準備使用的端口是否已經被佔用
2)安裝時可以選擇自動配置環境變量,或者安裝後自己將putty的安裝目錄(plink.exe所在目錄)加入Path中。
3)如果你自己用的電腦是Linux系統,plink.exe可以用ssh來代替。(引自原博客,本文未驗證該點)。

隱藏CMD窗口並使用自動化腳本

上面介紹的操作可以用bat腳本實現自動化並實現隱藏CMD窗口的效果(類似於linux下的後臺進程)。

1、新建一個bat文件,假如命名爲ssh-bridge.bat,內容填寫如下:

@echo off
echo.|plink.exe -N -pw alphapw -L 127.0.0.1:12345:192.168.0.100:22 alpha@222.222.222.222
exit

2、安裝RunHiddenConsole

自行搜索或到這裏下載。安裝後記得配置好環境變量。

3、再編寫一個bat腳本,假如命名爲connect.bat,內容編寫如下:

@echo off
RunHiddenConsole.exe ssh-bridge.bat
exit

然後將ssh-bridge.batconnect.bat放到同一個文件夾下,並將該文件夾加入到環境變量。

完成以上3步,以後就可以在重啓機器後這樣操作:
1、連接校園網的VPN。(如果可以直接訪問alpha服務器則可跳過這一步)。
2、打開cmd,輸入connect.bat然後回車,接着可以關閉這個窗口。

不出意外(例如網絡質量的原因導致未連接成功等),此時已經可以用ssh來直接連接beta服務器,並且如果之前已經配置過pychar的項目同步(配置一次即可),則現在已經可以正常使用。

發佈了51 篇原創文章 · 獲贊 18 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章