ssh连接失败自动重连脚本

本文介绍了一个简单的SSH自动重连脚本,该脚本能够实现当SSH连接失败时自动进行重试,直至连接成功。用户只需将脚本保存为ssh.sh,并通过执行sh ssh.sh user@host即可实现SSH连接,所有SSH参数均可正常传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个简单的小脚本,有些任务需要ssh连接,如果失败的话可以自动不断重连直至成功

#!/bin/bash

while [ 0 -eq 0 ]
do
    ssh $@
    if [ $? -eq 0 ]; then
        break;
    else
        sleep 2
    fi
done

使用也比较简单,保存为ssh.sh 执行sh ssh.sh user@host即等同于ssh user@host,ssh的所有参数也都可以加在后面,脚本会全部传递过去
### SSH 文件传输连接失败的原因分析 当遇到 SSH 文件传输连接失败的情况时,可能涉及多个方面的问题。以下是可能导致该问题的一些常见原因及其解决方案: #### 1. 私钥权限设置不正确 如果私钥文件 (~/.ssh/id_rsa) 的权限未被正确设置,则可能会导致认证失败。私钥文件应仅允许其拥有者读取和写入[^1]。 ```bash chmod 600 ~/.ssh/id_rsa ``` #### 2. 公钥未成功复制到目标主机 确保公钥已通过 `scp` 命令成功上传至远程服务器的目标路径 `/home/tester/.ssh/authorized_keys` 中。如果没有自动创建 `.ssh` 目录或 `authorized_keys` 文件,则需要手动完成这些操作。 ```bash mkdir -p /home/tester/.ssh && chmod 700 /home/tester/.ssh cat id_rsa.pub >> /home/tester/.ssh/authorized_keys chmod 600 /home/tester/.ssh/authorized_keys chown -R tester:tester /home/tester/.ssh/ ``` #### 3. 防火墙阻止端口访问 防火墙规则可能是造成连接失败的主要原因之一。确认本地机器以及目标服务器上的防火墙是否开放了必要的 SSH 端口(默认为 22)。可以使用以下命令临时关闭防火墙测试连通性: ```bash sudo systemctl stop firewalld ``` 或者添加特定规则以允许 SSH 流量: ```bash sudo firewall-cmd --add-service=ssh --permanent sudo firewall-cmd --reload ``` #### 4. SELinux 干扰 SELinux 可能会干扰 SCP 或 SFTP 连接过程。可以通过检查日志来判断是否存在此类问题,并适当调整策略或将 SELinux 设置为宽容模式作为短期解决办法: ```bash setenforce 0 ``` 长期来看,建议配置适合的布尔值而非完全禁用 SELinux: ```bash getsebool -a | grep ssh setsebool -P allow_sshfs_fuse_mount on ``` #### 5. PHP 使用 SSH2 扩展发送文件错误 对于基于 PHP 脚本实现的文件传输功能,需验证 `$connection`, `$infile`, 和 `$remotefile` 参数的有效性和可访问性[^2]。此外还需考虑服务器上是否有足够的磁盘空间存储新文件并匹配指定的权限掩码 (`0644`)。 --- ### 总结 以上列举了几种常见的 SSH 文件传输失败场景及对应的排查方法。实际应用过程中还需要结合具体环境进一步诊断潜在障碍因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值