与 Control Master 的共享 SSH 连接不起作用
Shared SSH connection with Control Master not working
我已经在我的本地机器上设置了共享 ssh 连接,但是当我尝试在我们的 CI 服务器上执行此操作时,它失败了,我无法弄清楚原因。
~/.ssh/config 是
StrictHostKeyChecking=no
Host *
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 2h
第一次连接会失败,但会创建套接字,第二次连接会失败,因为套接字已过时。
第一个连接的详细输出的结尾是....
$ ssh -vvvv -N user@domain.co.uk
....
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
....
Authenticated to domain.co.uk ([88.47.112.93]:22).
debug1: setting up multiplex master socket
debug3: muxserver_listen: temporary control path /home/rof/.ssh/control:domain.co.uk:22:user.3HfyjbhRCDHGwnrI
debug2: fd 4 setting O_NONBLOCK
debug3: fd 4 is O_NONBLOCK
debug3: fd 4 is O_NONBLOCK
debug1: channel 0: new [/home/rof/.ssh/control:domain.co.uk:22:user]
debug3: muxserver_listen: mux listener channel 0 fd 4
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x08
debug1: control_persist_detach: backgrounding master process
debug2: control_persist_detach: background process is 84004
Control socket connect(/home/rof/.ssh/control:domain.co.uk:22:user): Connection refused
Failed to connect to new control master
debug1: forking to background
debug1: Entering interactive session.
debug2: set_control_persist_exit_time: schedule exit in 7200 seconds
如果你 运行 它没有 -N 选项,命令输入就会挂起。
任何后续的 ssh 连接都表示套接字已失效并取消链接,因此不使用共享连接。
有什么想法吗?
对于遇到此问题的任何其他人,这是因为我们使用的 CI 服务器使用 overlayfs
作为其文件系统,这与 unix 套接字不兼容。
为了解决这个问题,我将套接字保存在虚拟内存中..
ControlPath /var/shm/control:%h:%p:%r
我已经在我的本地机器上设置了共享 ssh 连接,但是当我尝试在我们的 CI 服务器上执行此操作时,它失败了,我无法弄清楚原因。
~/.ssh/config 是
StrictHostKeyChecking=no
Host *
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 2h
第一次连接会失败,但会创建套接字,第二次连接会失败,因为套接字已过时。
第一个连接的详细输出的结尾是....
$ ssh -vvvv -N user@domain.co.uk
....
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
....
Authenticated to domain.co.uk ([88.47.112.93]:22).
debug1: setting up multiplex master socket
debug3: muxserver_listen: temporary control path /home/rof/.ssh/control:domain.co.uk:22:user.3HfyjbhRCDHGwnrI
debug2: fd 4 setting O_NONBLOCK
debug3: fd 4 is O_NONBLOCK
debug3: fd 4 is O_NONBLOCK
debug1: channel 0: new [/home/rof/.ssh/control:domain.co.uk:22:user]
debug3: muxserver_listen: mux listener channel 0 fd 4
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x08
debug1: control_persist_detach: backgrounding master process
debug2: control_persist_detach: background process is 84004
Control socket connect(/home/rof/.ssh/control:domain.co.uk:22:user): Connection refused
Failed to connect to new control master
debug1: forking to background
debug1: Entering interactive session.
debug2: set_control_persist_exit_time: schedule exit in 7200 seconds
如果你 运行 它没有 -N 选项,命令输入就会挂起。
任何后续的 ssh 连接都表示套接字已失效并取消链接,因此不使用共享连接。
有什么想法吗?
对于遇到此问题的任何其他人,这是因为我们使用的 CI 服务器使用 overlayfs
作为其文件系统,这与 unix 套接字不兼容。
为了解决这个问题,我将套接字保存在虚拟内存中..
ControlPath /var/shm/control:%h:%p:%r