python通过跳板机连接服务器_使用pycharm、跳板机连接内网服务器
使用pycharm、跳板機(jī)連接內(nèi)網(wǎng)服務(wù)器
接手實(shí)驗(yàn)室服務(wù)器后,大部分同學(xué)在GPU集群上跑程序都是直接在ssh界面上跑,這里想著通過(guò)pycharm通過(guò)跳板機(jī)來(lái)連接服務(wù)器。
總體就是實(shí)驗(yàn)室服務(wù)器僅限內(nèi)網(wǎng)訪問(wèn),同時(shí)實(shí)驗(yàn)室也提供了一個(gè)跳板機(jī),可以先ssh到跳板機(jī)再?gòu)奶鍣C(jī)ssh到內(nèi)網(wǎng)服務(wù)器。然而這種方式不方便傳輸文件,也沒(méi)法用pycharm進(jìn)行自動(dòng)同步代碼或者遠(yuǎn)程調(diào)試。本篇文章給出了一個(gè)該類問(wèn)題的解決方案,即通過(guò)ssh隧道的方式,用Pycharm通過(guò)跳板機(jī)連接內(nèi)網(wǎng)服務(wù)器。
步驟一 配置免密登錄
一般情況下,GPU集群都是配置過(guò)免密登陸的,所以這個(gè)步驟一般是忽略的。
在本地配置
vim ~/.ssh/config
在config文件中輸入以下內(nèi)容
Host *
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/%n:%p
完成配置后在本地登錄一次跳板機(jī).
登錄跳板機(jī),并在跳板機(jī)配置
vim ~/.ssh/config
在config文件中輸入以下內(nèi)容
Host *
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/%n:%p
完成配置后在跳板機(jī)上登錄一次內(nèi)網(wǎng)服務(wù)器。
步驟二 設(shè)置ssh隧道
在本地命令行(win10一般是 powershell)輸入如下命令即可:
ssh -N -f -L 6000::22 -p username@ -o TCPKeepAlive=yes
比如我的:
ssh -N -f -L 6000:11.11.11.3:22 -p 22 jim@**.**.**.** -o TCPKeepAlive=yes
上述命令各個(gè)參數(shù)的含義如下:
-N 告訴SSH客戶端,這個(gè)連接不需要執(zhí)行任何命令。僅僅做端口轉(zhuǎn)發(fā)
-f 告訴SSH客戶端在后臺(tái)運(yùn)行
-L 做本地映射端口
關(guān)于SSH建立管道參考
此時(shí),登錄本地的6000端口就相當(dāng)于登錄內(nèi)網(wǎng)服務(wù)器了。
ssh -p 6000 服務(wù)器用戶名@localhost
步驟三 配置pycharm
配置pycharm
這里只需配置ip為127.0.0.1, 端口為6000,并輸入內(nèi)網(wǎng)服務(wù)器的賬號(hào)密碼即可看到服務(wù)器安裝的python.
具體配置方式參考
步驟四(可選)使用corn 定時(shí)維護(hù)ssh 隧道
SSH 隧道可能因?yàn)榫W(wǎng)絡(luò)不穩(wěn)定而斷開(kāi),每次斷開(kāi)之后都需要手動(dòng)再次建立SSH 隧道。下面介紹一種解決方案,通過(guò)cron定期執(zhí)行腳本來(lái)維護(hù)SSH隧道暢通:
編寫腳本,通過(guò)判斷socket文件是否存在來(lái)判斷隧道連接是否已經(jīng)斷開(kāi)
在本地任意位置創(chuàng)建腳本auto_connect.sh并寫入如下內(nèi)容(注意更換<>中內(nèi)容)
#/usr/bin/env sh
if [[ ! -a "~/.ssh/:" ]]; then
echo "connecting : .."
ssh -N -f -L 6000::22 -p username@ -o TCPKeepAlive=yes
if [[ $? -ne 0 ]]; then
echo "failed to connect :" >&1
exit 2
fi
fi
使用cron服務(wù)定時(shí)執(zhí)行腳本建立ssh 隧道。在命令行中執(zhí)行如下語(yǔ)句:(注意修改腳本位置, 路徑不可用縮寫)
echo "0-59 * * * * sh /path/to/auto_connect.sh" > ~/.crontab
crontab ~/.crontab
本部分參考這里, 使用cron服務(wù)定時(shí)執(zhí)行腳本參考這里
Reference
整體文章
總結(jié)
以上是生活随笔為你收集整理的python通过跳板机连接服务器_使用pycharm、跳板机连接内网服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: hash 值重复_面试题:HashSet
- 下一篇: python redis订阅_Pytho