我们有一个运行CentOS 6.5的托pipe专用服务器,它是我们网站的生产服务器。 我有一个本地服务器,也被用作CentOS 6.5的备份服务器,在这里只是存储备份文件。 两台服务器都安装了所有适当的更新
在生产服务器上,我有所有计划通过cron运行的备份脚本,以创build备份文件并将它们rsync到备份服务器。 这些脚本都按时执行,但由于尝试联系备份服务器时发生SSH超时,rsync失败。
这是我卡住的地方。 即使脚本超时,我也可以同时使用PuTTY和WinSCP通过SSHlogin到备份服务器。 只要重新启动备份服务器上的sshd服务,生产服务器上的脚本就会顺利运行(通过命令行和cron)。
这就好像备份服务器决定在很长一段时间之后退出监听生产服务器一样。
他们被问到之前的一些额外的细节:
我真的需要一些帮助寻找什么。 在生产服务器运行脚本之前,我可以设置一个脚本来重新启动备份服务器上的sshd服务,但是这种感觉太像一个黑客,而不是一个修复。 任何援助将不胜感激。
示例脚本请求。 这将备份数据库并rsyncs他们与整个网站目录的rsync:
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin # ----------------- # NIGHTLY BACKUP SCRIPT # ----------------- # --Set log file and capture parameters exec &> /path/logfile.log # # --Set Current Date Time now=$(date +"%Y-%m-%d") # # --Backup Database 1 /usr/bin/mysqldump -u USER -pPASSWORD DATABASE1 | /bin/gzip > /path/database1-$now.sql.gz # # --Backup Database 2 /usr/bin/mysqldump -u USER -pPASSWORD DATABASE2 | /bin/gzip > /path/database2-$now.sql.gz # # --Sync Database Backups to Remote Server /usr/bin/rsync -avz -e "ssh -v -p # -i /path/key" /path USER@IP:/path # # --Sync all Website Files to Remote Server /usr/bin/rsync -avz --delete -e "ssh -v -p # -i /path/key" /path USER@IP:/path
请求输出日志。 以下是从上面的脚本到“同步数据库备份到远程服务器”的rsync行的日志输出
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to IP [IP] port #. debug1: connect to address IP port #: Connection timed out ssh: connect to host IP port #: Connection timed out rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
还要求我运行以下命令: nc -v IP PORT但是,结果几乎与日志相同:
nc: connect to IP port # (tcp) failed: Connection timed out
在备份服务器上重新启动sshd服务并重新运行“nc”命令后,我得到以下结果:
Connection to IP # port [tcp/fpo-fns] succeeded! SSH-2.0-OpenSSH_5.3
作为一个testing,我创build了一个脚本来运行每小时和rsync从生产服务器到备份服务器的网站目录。 我想我至less会找出备份服务器停止允许来自生产服务器的连接的大致时间。 相反,小时脚本和所有其他脚本从昨天开始没有问题。
虽然我不认为这是一个真正的“修复”,但至less似乎解决了这个问题,我不必再手动启动备份,即在备份服务器上重新启动sshd服务,然后在生产服务器上运行脚本。 如果有人对此有何认识,请在评论中告诉我,因为我仍然想找出根本原因。