stone2083

Linux下SSH Session复制

羡慕Windows下secureCRT的Session Copy功能,一直在寻找Linux下类似的软件,殊不知SSH本身就支持此功能。
特别感谢阿干同学的邮件分享。

详细方法
Linux/mac下,在$HOME/.ssh/config中加入
Host 
*
ControlMaster auto
ControlPath 
/tmp/ssh-%r@%h
至此只要第一次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上通过证书的形式,可以实现免登录,没错。
对于静态密码,完全可以这么干;对于动态密码(口令的方式),则上述手段可以方便很多。

posted on 2011-08-25 17:02 stone2083 阅读(3637) 评论(4)  编辑  收藏 所属分类: linux

Feedback

# re: Linux下SSH Session复制 2011-08-25 22:19 gavingeng

ssh -keygen -C 'xxx@xxx.com' -t rsa  回复  更多评论   

# re: Linux下SSH Session复制 2011-08-26 09:04 stone2083

@gavingeng
不错的方法。像开发服务器上,就可以这么干。不过对于线上环境,跳板机+动态口令,那么Session复制的方式是最理想的了。
除了证书方式,linux下sshpass软件,也还是不错的。  回复  更多评论   

# re: Linux下SSH Session复制 2011-08-26 09:59 淘宝女装

这个没玩过,一般只是用SSH远程连接  回复  更多评论   

# re: Linux下SSH Session复制 2014-07-04 13:08 kehr

@stone2083
百度的?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: