要使用脚本禁止SSH密码登录,可以修改SSH配置文件/etc/ssh/sshd_config中的PasswordAuthentication选项,以下是一个Shell脚本示例:

#!/bin/bash
# SSH配置文件路径
SSHD_CONFIG="/etc/ssh/sshd_config"
# 备份原始配置文件
cp "$SSHD_CONFIG" "${SSHD_CONFIG}.bak.$(date +%Y%m%d%H%M%S)"
# 检查是否已存在PasswordAuthentication配置
if grep -q "^PasswordAuthentication" "$SSHD_CONFIG"; then
# 修改现有配置为no
sed -i 's/^PasswordAuthentication.*/PasswordAuthentication no/' "$SSHD_CONFIG"
else
# 添加配置
echo "PasswordAuthentication no" >> "$SSHD_CONFIG"
fi
# 重启SSH服务(根据系统选择)
if command -v systemctl &> /dev/null; then
systemctl restart sshd
elif command -v service &> /dev/null; then
service sshd restart
else
/etc/init.d/ssh restart
fi
echo "SSH密码登录已禁用"
使用前请注意:
- 需要root权限运行此脚本:
sudo bash script.sh - 务必先配置好SSH密钥登录,否则会无法连接服务器
- 一些系统可能使用
ssh而非sshd服务名 - 某些云服务器可能需要额外配置(如AWS需检查安全组)
- 建议先在测试环境验证
安全建议:
- 保留至少一个root会话窗口以防配置错误
- 配置公钥认证后,测试新会话能否正常登录
- 考虑使用
AuthenticationMethods publickey进一步强化安全性