查看: 482|回复: 0

[教程] Linux下SSH Session复制功能实现方法

[复制链接]

9

主题

0

回帖

27

积分

技术1级

金币
18
阅读权限
10
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-1-4
QQ
发表于 2009-10-15 14:49:41 | 显示全部楼层 |阅读模式
特别感谢阿干同学的邮件分享。
详细方法

复制代码代码如下:
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上通过证书的形式,可以实现免登录,没错。
对于静态密码,完全可以这么干;对于动态密码(口令的方式),则上述手段可以方便很多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部