与Control Master的共享SSH连接不起作用

Mat*_*son 3 sockets ssh openssh

我已经设置好在我的本地机器上共享一个ssh连接,但是当我尝试在我们的CI服务器上执行此操作时,它失败了,我无法解决原因.

〜/ .ssh/config是

StrictHostKeyChecking=no
Host *
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 2h
Run Code Online (Sandbox Code Playgroud)

第一个连接将失败,但会创建套接字,第二个连接将失败,因为套接字是陈旧的.

第一次连接的详细输出结束是....

$ 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
Run Code Online (Sandbox Code Playgroud)

如果在没有-N选项的情况下运行它,命令输入就会挂起.

任何后续的ssh连接都说套接字是陈旧的并且取消链接,因此不使用共享连接.

有任何想法吗?

Mat*_*son 9

对于有这个问题的其他人来说,这是因为我们使用的CI服务器overlayfs用作其文件系统,这与unix套接字不兼容.

为了解决这个问题,我将套接字保存在虚拟内存中.

ControlPath /var/shm/control:%h:%p:%r
Run Code Online (Sandbox Code Playgroud)

  • 你是一个救生员 - 谢谢!在我的设置中,我不得不将 `/var/shm` 更改为更常见的 `/dev/shm`。 (2认同)