我正在运行jenkins管道代码,一段时间后,在控制台日志中给出client_loop: send disconnect: Broken pipe
我已经检查了服务器防火墙规则并检查了使用密钥对的连接,这些都很好。
管道{
stages {
stage('Create EC2 Instance-Run Ansible command-Terminate EC2 Instance') {
steps {
script {
sshagent(['zocia-rds-backup-ssh-key'])
{
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no ubuntu@X.X.X.X "bash -c ' sudo chmod 777 /etc/ssh/sshd_config && echo "TCPKeepAlive yes" >> /etc/ssh/sshd_config && echo "ClientAliveInterval 120" >> /etc/ssh/sshd_config && echo "ClientAliveCountMax 30" >> /etc/ssh/sshd_config && sudo systemctl restart sshd'"
'''
}
}
}
}
}
}
方法一:防止服务器端SSH超时
$ vi/etc/ssh/sshd_config
TCPKeepAlive是的
ClientAliveInterval 120
ClientAliveCountMax 30$ sudo systemctl restart sshd
指出:
这将使服务器每120秒向客户端发送一个"空数据包",并且在客户端处于非活动状态30秒(120秒* 30 = 3600秒= 1小时)之前不会断开它们。
(或)这些设置将使SSH服务器每120秒(2分钟)向另一方发送一个空数据包,如果在30次尝试后没有收到任何响应,则放弃,此时连接很可能已经被丢弃。
方法2:防止客户端SSH超时(例如:jenkins -----)
$ vi/etc/ssh/sshd_config
TCPKeepAlive是的
ServerAliveInterval 120
ServerAliveCountMax 30$ sudo systemctl restart sshd
指出:
这将在您的SSH连接上每120秒发送一个"空数据包"以保持它们存活。(或)
这些设置将使SSH客户端每120秒(2分钟)向另一方发送一个空数据包,如果在30次尝试后没有收到任何响应,则放弃,此时连接很可能已经被丢弃。