如何用脚本禁止SSH密码登录?

wen 实用脚本 2

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

如何用脚本禁止SSH密码登录?

#!/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密码登录已禁用"

使用前请注意:

  1. 需要root权限运行此脚本:sudo bash script.sh
  2. 务必先配置好SSH密钥登录,否则会无法连接服务器
  3. 一些系统可能使用ssh而非sshd服务名
  4. 某些云服务器可能需要额外配置(如AWS需检查安全组)
  5. 建议先在测试环境验证

安全建议:

  • 保留至少一个root会话窗口以防配置错误
  • 配置公钥认证后,测试新会话能否正常登录
  • 考虑使用AuthenticationMethods publickey进一步强化安全性

抱歉,评论功能暂时关闭!