TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:

TOP云总站云服务器:https://topyun.vip/server/buy.html

TOP云C站云服务器:https://c.topyun.vip/cart

在云服务器上配置 SSH 密钥登录 是提升安全性的核心措施,可彻底告别密码爆破风险。以下是详细操作指南,涵盖 密钥生成、服务器配置、权限优化及故障排查 全流程:


一、SSH 密钥登录原理

  • 密钥对组成

    • 私钥(id_rsa):保存在本地客户端,需严格保密(类似密码)。

    • 公钥(id_rsa.pub):上传到服务器,用于验证客户端身份。

  • 优势

    • 无需记忆复杂密码,避免暴力破解。

    • 支持免密登录(结合 ssh-agent)。

    • 可禁用密码登录,彻底阻断攻击路径。


二、生成 SSH 密钥对(本地客户端)

1. Linux/macOS 或 Windows(WSL/OpenSSH)

# 进入密钥存储目录(默认 ~/.ssh)
cd ~/.ssh

# 生成密钥对(RSA 4096位,兼容性最佳)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# 按提示操作:
# - 默认保存路径(直接回车):~/.ssh/id_rsa
# - 设置密钥密码(可选,增强安全性):输入短语或直接回车跳过
  • 生成的文件

    • id_rsa:私钥(必须保密!)。

    • id_rsa.pub:公钥(需上传到服务器)。

2. Windows(PuTTY 用户)

  1. 下载 PuTTYgen(官网链接)。

  2. 打开 PuTTYgen → 选择 RSA → 点击 Generate(移动鼠标生成随机数)。

  3. 保存私钥(.ppk 文件)和公钥(复制文本框内容)。


三、将公钥上传到服务器

方法1:使用 ssh-copy-id(最简单)

# 自动上传公钥到服务器的默认用户(如 ubuntu)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@your-server-ip

# 指定端口(如 SSH 端口改为 2222)
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 username@your-server-ip
  • 原理:将公钥追加到服务器的 ~/.ssh/authorized_keys 文件中。

方法2:手动复制粘贴(适用于无 ssh-copy-id 的环境)

  1. 查看本地公钥:

    cat ~/.ssh/id_rsa.pub
  2. 登录服务器,创建 .ssh 目录并设置权限:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  3. 将公钥粘贴到 ~/.ssh/authorized_keys:

    echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys  # 关键!权限必须为600

四、服务器端配置优化

1. 禁用密码登录(关键步骤)

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

修改以下参数:

PasswordAuthentication no      # 禁用密码登录
PubkeyAuthentication yes       # 启用密钥认证
ChallengeResponseAuthentication no  # 禁用交互式认证

⚠️ 注意

  • 修改后必须确保密钥登录可用,否则可能导致无法连接服务器!建议先保留密码登录过渡。

2. 限制登录用户(可选)

AllowUsers username1 username2  # 仅允许指定用户登录
# 或
AllowGroups ssh-users           # 仅允许特定用户组

3. 重启 SSH 服务

sudo systemctl restart sshd
# 或旧版系统使用:
sudo service ssh restart

五、测试密钥登录

# 使用密钥登录(默认端口22)
ssh -i ~/.ssh/id_rsa username@your-server-ip

# 指定端口(如2222)
ssh -i ~/.ssh/id_rsa -p 2222 username@your-server-ip
  • 首次连接:需确认服务器指纹(输入 yes)。

  • 成功标志:无需输入密码直接登录。


六、高级安全配置

1. 使用 ssh-agent 管理私钥(免重复输入密码)

# 启动 ssh-agent
eval "$(ssh-agent -s)"

# 添加私钥到 agent(需输入密钥密码)
ssh-add ~/.ssh/id_rsa

# 查看已加载的密钥
ssh-add -l
  • 持久化配置(避免每次重启重新加载):

    • 将以下内容添加到 ~/.bashrc 或 ~/.zshrc:

      if [ -z "$SSH_AUTH_SOCK" ]; then
        eval "$(ssh-agent -s)"
        ssh-add ~/.ssh/id_rsa
      fi

2. 禁用 root 用户远程登录

# /etc/ssh/sshd_config
PermitRootLogin no  # 禁止 root 直接登录
  • 替代方案:通过普通用户登录后 sudo 提权。

3. 更改默认 SSH 端口(进一步降低扫描风险)

# /etc/ssh/sshd_config
Port 2222  # 改为非标准端口(如2222)
  • 记得更新防火墙规则(如 ufw allow 2222/tcp)。


七、故障排查

1. 密钥登录失败常见原因

现象可能原因解决方案
Permission denied1. 公钥未正确上传<br>2. 文件权限错误<br>3. SSH 配置未生效1. 检查 ~/.ssh/authorized_keys<br>2. 确保权限 700(目录)和 600(文件)<br>3. 重启 SSH
Agent admitted failure私钥未加载到 ssh-agent执行 ssh-add ~/.ssh/id_rsa
Connection refused1. SSH 服务未运行<br>2. 防火墙/安全组未放行端口1. sudo systemctl status sshd<br>2. 检查云平台安全组规则

2. 日志分析

  • 服务器日志

    sudo tail -f /var/log/auth.log  # Ubuntu/Debian
    sudo tail -f /var/log/secure    # CentOS/RHEL
  • 客户端调试

    ssh -vvv -i ~/.ssh/id_rsa username@your-server-ip # 显示详细日志

八、总结与最佳实践

  1. 必做操作

    • 生成密钥对 → 上传公钥 → 禁用密码登录 → 限制登录用户。

  2. 增强措施

    • 使用 ssh-agent 管理私钥。

    • 更改默认 SSH 端口 + 防火墙限制。

    • 定期轮换密钥(如每6个月)。

  3. 灾备方案

    • 保留一个备用管理员账户的密码登录(测试后禁用)。

    • 使用云厂商的 VNC 紧急控制台 作为最后手段。

通过以上配置,你的服务器将实现 军事级 SSH 安全防护! 🔐
(如需进一步自动化,可结合 Ansible 批量部署密钥。)


不容错过
Powered By TOPYUN 云产品资讯