歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux下SSH Session復制功能實現方法

Linux下SSH Session復制功能實現方法

日期:2017/3/1 18:02:33   编辑:Linux技術

特別感謝阿干同學的郵件分享。

詳細方法


復制代碼代碼如下:
Linux/mac下,在$HOME/.ssh/config中加入
Host *
ControlMaster auto
ControlPath <a>/tmp/ssh-%r@%h</a>

至此只要第一次SSH登錄輸入密碼,之後同個Hosts則免登。

配置文件分析

man ssh_config 5


復制代碼代碼如下:
ControlPath
Specify the path to the control socket used for connection sharing as described in the ControlMaster section
above or the string “none” to disable connection sharing. In the path, ‘%l’ will be substituted by the
local host name, ‘%h’ will be substituted by the target host name, ‘%p’ the port, and ‘%r’ by the remote
login username. It is recommended that any ControlPath used for opportunistic connection sharing include at
least %h, %p, and %r. This ensures that shared connections are uniquely identified.

%r 為遠程機器的登錄名
%h 為遠程機器名

原理分析

嚴格地講,它並不是真正意義上的Session Copy,而只能說是共享Socket。
第一次登錄的時候,將Socket以文件的形式保存到:/tmp/ssh-%r@%h這個路徑
之後登錄的時候,一旦發現是同個主機,則復用這個Socket
故,一旦主進程強制退出(Ctrl+C),則其他SSH則被迫退出。

可以通過ssh -v參數,看debug信息驗證以上過程

備注

有同學說在linux上通過證書的形式,可以實現免登錄,沒錯。
對於靜態密碼,完全可以這麼干;對於動態密碼(口令的方式),則上述手段可以方便很多。

Copyright © Linux教程網 All Rights Reserved