我正在使用OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
Mac OS X Snow Leopard。我已ControlMaster
配置功能以保持持久连接。我的~/.ssh/config
配置如下:
Host *
ControlPath /ms/%r@%h:%p
ControlMaster auto
ControlPersist 4h
Host *.unfuddle.com
ControlMaster no
但是,据我所见 - 即使当我尝试使用 SSH 连接 unfuddle.com 主机时,也始终会创建主连接:
[andrey-mbp ~]$ ssh -v[电子邮件保护] OpenSSH_5.9p1,OpenSSL 0.9.8r 2011 年 2 月 8 日 debug1:读取配置数据/Users/akhkharu/.ssh/config debug1:/Users/akhkharu/.ssh/config 第 1 行:应用选项 * debug1:/Users/akhkharu/.ssh/config 第 6 行:应用 *.unfuddle.com 的选项 debug1:读取配置数据/usr/local/Cellar/openssh/5.9p1/etc/ssh_config debug1:自动多路复用:尝试现有的主控 debug1:控制套接字“/ms/[电子邮件保护]:22" 不存在 debug1:连接到droolit.unfuddle.com [174.129.5.196] 端口 22。 debug1:连接已建立。 debug1:身份文件/Users/akhkharu/.ssh/id_rsa 类型 1 debug1:身份文件/Users/akhkharu/.ssh/id_rsa-cert 类型 -1 debug1:身份文件/Users/akhkharu/.ssh/id_dsa 类型 2 debug1:身份文件/Users/akhkharu/.ssh/id_dsa-cert 类型 -1 debug1:身份文件/Users/akhkharu/.ssh/id_ecdsa 类型 -1 debug1:身份文件/Users/akhkharu/.ssh/id_ecdsa-cert 类型 -1 debug1:远程协议版本2.0,远程软件版本OpenSSH_5.8 调试1:匹配:OpenSSH_5.8 pat OpenSSH* debug1:启用协议 2.0 的兼容模式 debug1:本地版本字符串 SSH-2.0-OpenSSH_5.9 debug1:SSH2_MSG_KEXINIT 已发送 debug1: 收到 SSH2_MSG_KEXINIT debug1:kex:服务器->客户端aes128-ctr hmac-md5 none debug1:kex:客户端->服务器aes128-ctr hmac-md5 none debug1:发送 SSH2_MSG_KEX_ECDH_INIT debug1:期待 SSH2_MSG_KEX_ECDH_REPLY debug1:服务器主机密钥:RSA a6:74:33:36:95:31:6e:a6:d7:71:87:b8:3c:38:e2:60 debug1:主机“droolit.unfuddle.com”已知并且与 RSA 主机密钥匹配。 debug1:在 /Users/akhkharu/.ssh/known_hosts:390 中找到密钥 debug1: ssh_rsa_verify: 签名正确 debug1: SSH2_MSG_NEWKEYS 已发送 debug1:期望 SSH2_MSG_NEWKEYS debug1: 已收到 SSH2_MSG_NEWKEYS debug1:服务器不允许漫游 debug1: SSH2_MSG_SERVICE_REQUEST 已发送 debug1: 已收到 SSH2_MSG_SERVICE_ACCEPT debug1:可以继续的认证:publickey debug1:下一个认证方法:publickey debug1:提供 RSA 公钥:/Users/akhkharu/.ssh/id_rsa debug1:服务器接受密钥:pkalg ssh-rsa blen 277 debug1:认证成功(公钥)。 已向 droolit.unfuddle.com ([174.129.5.196]:22) 验证身份。 debug1:设置多路复用主套接字 debug1: 通道 0: 新的 [/ms/[电子邮件保护]:22] debug1:control_persist_detach:后台主进程 debug1:分叉到后台 debug1:进入交互式会话。 debug1:多路复用控制连接 调试1:通道1:新[mux-control] 调试1:通道2:新[客户端会话] debug1:远程:强制命令。 debug1:远程:端口转发已禁用。 debug1:远程:X11转发已禁用。 debug1:远程:代理转发已禁用。 debug1:远程:Pty 分配已禁用。 debug1:远程:强制命令。 debug1:远程:端口转发已禁用。 debug1:远程:X11转发已禁用。 debug1:远程:代理转发已禁用。 debug1:远程:Pty 分配已禁用。 debug1:mux_client_request_session:主会话 ID:2 PTY 分配请求失败 需要 SSH_ORIGINAL_COMMAND debug1:client_input_channel_req:通道 2 rtype 退出状态回复 0 debug1: client_input_channel_req: 通道 2 rtype[电子邮件保护]回复 0 调试1:频道2:空闲:客户端会话,nchannels 3 调试1:通道1:空闲:多路复用控制,n通道2 与 droolit.unfuddle.com 的共享连接已关闭。
[andrey-mbp ~]$ ll /ms/ 共 0 srw------- 1 akhkharu 管理员 0B 7月 17 11:55[电子邮件保护]:22
谢谢,
安德烈。
答案1
您的*
主机节正在捕获它。请将更具体的主机节放在前面。
答案2
正如在回答中所述我在 SuperUser 上提出了类似的问题,您可以使用“bang”语法从原始节中排除特定主机Host *
,如下所示:
Host * !*.unfuddle.com
ControlPath /ms/%r@%h:%p
ControlMaster auto
ControlPersist 4h
Host
就我的情况而言,我发现使用时各部分的顺序Host *
似乎无关紧要,但上述方法始终有效。
答案3
对于我来说,当我在节内另外ControlPath
设置时它就起作用了。none
host
您可以尝试:
Host *.unfuddle.com
ControlMaster no
ControlPath none
那么就不会生成控制会话。