SSH如何保持連接-Ubuntu 頂 原

SSH連接在沒有輸入和執行任務空閒一段時間後,就會自動斷開連接,以節約系統資源和提高安全性。但在做端口映射的時候,就比較麻煩,剛開始連接上,可能服務端就退出了。可以做一些設置,讓其能夠保持長期連接。當然,如果網絡中斷了,連接也就斷了,需要想別的辦法能夠自動重新連接。

Ubuntu 系統

A、服務器配置

修改ssh配置文件/etc/ssh/sshd_config,添加或者修改ClientAliveInterval爲:

ClientAliveInterval 60

這個參數的是意思是每1分鐘,服務器向客戶端發一個消息,用於保持連接。

保存後記得重啓ssh服務,使用sudo service sshd restart。

B、客戶端配置

在ssh客戶端配置文件/etc/ssh/ssh_config中添加下面這行:

ServerAliveInterval 60

或者,在linux系統中使用ssh連接遠程服務器時,可以使用-o的一個參數ServerAliveInterval來設置防止超時的時間。

比如:ssh -o serveraliveinterval=60 username@host

自動化執行SSH

我們希望建立端口映射的操作能夠自動執行。比如:

  • 動態端口映射:
    • sshpass -p "password" ssh -D 7070 user@serverip
    • 然後本機就可以使用端口localhsot:7070的socks5連接,就跟在serverip上操作一樣。
  • 反向鏈接(從本地鋪一個橋到服務器,然後其它流量可以從橋上過來):
    • sshpass -p "password" ssh -R 2222:localhost:22 root@serverip
    • 然後其它機器登入root@serverip,就可以使用 ssh -p 2222 user@localhost:22的方式來訪問了。

上面的sshpass是用於命令行傳入密碼的(否則需要交互輸入),ubuntu下可以直接 apt-get install sshpass 進行安裝。
然後寫腳本autossh.sh,內容如下:

#!/bin/bash

while [ '' == '' ]
do
ssh_d_process_num=`ps aux|grep -E 'ssh \-' |grep -v grep |wc -l`
if [ "$ssh_d_process_num" == "0" ]; then
  /home/user/sshpass -p "password" ssh -D 7070 user@ServerIP &
fi

sleep 300
done

執行一下這個腳本就可以了。sleep 300代表300秒查看一次,可以根據需要調整。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章