我有两台运行 Centos 7 的服务器,它们可以相互通信。在 shell 脚本中,我需要通过 ssh 停止在另一个节点上运行的自定义服务。问题是,有时整个 ssh 会话会以退出代码 255 关闭。我没有任何解释,甚至无法重新创建类似的情况来进行更多调查。我将不胜感激任何有用的想法。
错误:
[root@server1 ~]# ssh server2
[root@server2 ~]# ssh -vvv -tt server1 "systemctl stop myservice"
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for server1
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_forwards: request forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 5429
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 2
debug3: mux_client_read_packet: read header failed: Broken pipe
debug2: Control master terminated unexpectedly
Shared connection to server2 closed.
[root@server1 ~]# echo $?
255
补充细节:
controlmaster=auto
ControlPersist 60s
ConnectTimeout = 1
ControlPath /dev/shm/%r@%h:%p
StrictHostKeyChecking 否
更新:
我意识到该ssh -vvv -tt server1 "systemctl stop myservice"
命令没有收到任何错误或非零退出代码。但问题是因为这个命令,ssh连接从服务器1到服务器2休息。
答案1
也许在超时发生之前增加最大等待时间可能是一个可行的选择。