Shell脚本判断服务器SSH免密是否配置完成

需求

最近一批服务器配置了SSH免密登录,需要编写一个脚本检查SSH免密是否可用

服务清单

将服务器IP地址配置到一个文件中ip_list.txt,内容如下:

bash 复制代码
192.168.1.1
192.168.1.2
192.168.1.3

检查脚本

bash 复制代码
#!/bin/bash

serverfile=ip_list.txt
hostname=''
while read line; do
    # 获取IP
    IP=`echo $line | cut -d " " -f1 | sed 's/\r//'`
    if [ -z "$hosts" ]; then
        hosts="$IP"
    else
        hosts="$hosts $IP"
    fi
done < ./$serverfile

for ip in $hosts
do
    # 执行远程命令,并将标准输出和标准错误合并后传递给过滤管道
    ssh -q root@$ip "echo 'TEST'" 2>&1 | grep -v -E "TEST|Authorized|Web console" | grep -v '^$'

    # 关键步骤:获取上一条ssh命令的退出状态码
    # 在Bash中,${PIPESTATUS[0]} 记录了管道中第一个命令(即ssh)的退出状态
    exit_code=${PIPESTATUS[0]}

    # 根据状态码判断是否成功
    if [ $exit_code -eq 0 ]; then
        echo "$ip OK"
    else
        echo "$ip FAIL (退出码: $exit_code)"
fi
done

检查结果

bash 复制代码
192.168.1.1 OK
192.168.1.2 FAIL (退出码: 255)
192.168.1.3 OK
相关推荐
YuMiao9 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
碳基沙盒1 天前
OpenClaw 多 Agent 配置实战指南
运维
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean4 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
埃博拉酱4 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
茶杯梦轩4 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
海天鹰5 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅5 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑