ssh的連線重用

2021-07-05 03:58:22 字數 1375 閱讀 2801

原理很簡單,開乙個ssh連線在後台放著,以後再有需要用到ssh到同樣主機的時候,直接使用這個連線的socket檔案,不用再建立連線了,同理,也不需要再進行使用者身份驗證。

預設是關閉的,可以在~/.ssh/config中開啟:

host *

controlmaster auto

controlpath ~/.ssh/master-%r@%h:%p

建立「master」連線就可以用:

ssh -m -n -f fwolf.com
認證成功後會建立socket檔案[email protected]:22

其它的介紹資料也很多,我是在郵件列表中看到的,慚愧,使用ssh很久了,現在才知道,網上用ssh master controlmaster搜尋資料很多。

實際使用中,我倒有乙個反面的感覺,建立了「master」之後,一般的scp什麼的操作的確是快了,可如果單獨開乙個ssh terminal上去的話,輸入的響應速度很變慢。開始以為是這個ssh連線也重用了「master」的原因,後來加上-o controlmaster=no引數強制不使用master,單獨建立新連線也是一樣,不知道是什麼原因導致的。

仔細測試一下效果,首先在已經建立master的情況下連線主機,執行命令並馬上退出:

$ time ssh fwolf.com -c pwd
執行多次,得到的執行時間一般在0.33秒左右,然後關閉master,再次執行這個命令,平均執行時間為6.7秒,的確是快了許多。

後來才發現,剛才對響應速度「慢」的感覺應該是錯誤的,可能是由於另外開著乙個scp的緣故,scp完成之後,速度就快很多了。之所以會感覺「慢」,其實也是相對而言的,因為單獨ssh連線上去之後,也是不中斷的持續連線、持續響應,同樣沒有重新建立連線的時間,速度也是非常快的。開啟master主要對那些一會兒連線、一會兒斷開,請求斷斷續續的情況最有效果。

另外,還有兩個比較有用的相關控制命令:

# 檢查當前是否已經建立master連線

$ ssh fwolf.com -o check

master running (pid=6350)

# 傳送斷開當前master連線的請求,比我用的笨kill方式好多了

$ ssh fwolf.com -o exit

exit request sent.

$ ssh fwolf.com -o check

control socket connect(/home/fwolf/.ssh/[email protected]:22): no such file or directory

ssh連線的配置

一般預設kali的ssh是關閉的 我們來配置一下,開啟22埠 1.找到ssh的配置檔案,並進行配置 vim etc ssh sshd config 2.進行配置 找到passwordauthentication這一行,如果後面是no,那麼改為yes,如果有 號,將 去掉 將 permitrootlo...

開發可重用的資料庫連線

1 定義該類需要用到的一些屬性與例項 private static final string driverclass com.microsoft.jdbc.sqlserver.sqlserverdriver protect final string url jdbc microsoft sqlser...

保持ssh連線

終端軟體 better terminal emulator pro用手機ssh到伺服器上,但是如果隔1 2分鐘沒 的clientaliveinterval 60 clientalivecountmax 1 這 樣,ssh server 每 60 秒就會自動傳送乙個訊號給 client,而等待 cli...