Skip to content

SSH 远程服务器操作手册 ​

本文档旨在帮助你掌握 SSH 远程连接的标准化操作流程,包括账号密码登录、免密密钥登录以及如何配置安全加固。

核心原则: 生产环境禁止使用密码登录,强制使用密钥登录。


1. 登录方式对比 ​

方式安全性便捷性适用场景
密码登录⭐⭐ (易被暴力破解)⭐⭐ (需记忆/输入)初始设置、临时救援
密钥登录⭐⭐⭐⭐⭐ (极高)⭐⭐⭐⭐⭐ (全自动)日常运维、自动化脚本

2. 账号密码登录 (Legacy) ​

适用于服务器刚安装好,尚未配置密钥时的首次连接。

命令格式:

bash
ssh 用户名@服务器IP

示例:

bash
ssh hongjy@192.168.1.200
# 系统会提示输入密码 (输入过程不显示字符)

常见参数:

  • -p 2222: 指定端口 (如果修改了默认 22 端口)。
  • -v: 调试模式 (显示详细连接过程,排查连接失败用)。

3.1 原理 ​

通过非对称加密技术,将你的“公钥” (Public Key) 存放在服务器上,自己保留“私钥” (Private Key)。连接时自动匹配,无需输入密码。

3.2 配置步骤 (Client 端操作) ​

Step 1: 生成密钥对 (如果已有可跳过) ​

在你的本地电脑 (Windows/Mac) 终端执行:

powershell
# -t ed25519: 使用更安全高效的算法
# -C: 备注信息
ssh-keygen -t ed25519 -C "your_email@example.com"
  • 一路回车即可。
  • 生成文件位置: ~/.ssh/id_ed25519 (私钥) 和 ~/.ssh/id_ed25519.pub (公钥)。

Step 2: 上传公钥到服务器 ​

将你的公钥内容追加到服务器的 ~/.ssh/authorized_keys 文件中。

方式 A: 自动命令 (推荐)

powershell
# 需要先安装 OpenSSH 客户端
ssh-copy-id -i ~/.ssh/id_ed25519.pub hongjy@192.168.1.200

方式 B: 手动追加 (Windows PowerShell)

powershell
type ~/.ssh/id_ed25519.pub | ssh hongjy@192.168.1.200 "cat >> ~/.ssh/authorized_keys"

Step 3: 验证登录 ​

powershell
ssh hongjy@192.168.1.200

如果直接进入终端而未提示输入密码,即配置成功。


4. SSH 服务端安全加固 (Server Side) ​

⚠️ 警告: 修改配置前请确保密钥登录已完全可用,否则会导致无法连接服务器!

4.1 配置文件 ​

bash
sudo vim /etc/ssh/sshd_config

4.2 关键配置项 ​

建议修改以下参数以提升安全性:

ssh
# 1. 禁用 Root 登录 (必须)
PermitRootLogin no

# 2. 禁用密码验证 (强烈推荐 - 确保密钥可用后再开!)
PasswordAuthentication no

# 3. 启用公钥验证
PubkeyAuthentication yes

# 4. 修改默认端口 (可选,防扫描)
# Port 2222

4.3 重启服务生效 ​

bash
sudo systemctl restart ssh

5. 常见问题 (Troubleshooting) ​

Q1: 配置了密钥还是要输密码? ​

  • 权限问题: 服务器端的 .ssh 目录权限必须严格。
    bash
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
  • 配置问题: 检查 /etc/ssh/sshd_config 中是否开启了 PubkeyAuthentication yes。

Q2: 修改端口后连不上了? ​

  • 防火墙: 检查 UFW 是否放行了新端口 (sudo ufw allow 2222/tcp)。
  • 连接命令: 记得加 -p 参数 (ssh -p 2222 user@ip)。

Q3: 密钥丢失了怎么办? ​

  • 物理救援: 通过服务器控制台 (VNC/HDMI) 登录。
  • 恢复密码: 在控制台修改 sshd_config,将 PasswordAuthentication 改回 yes 并重启 SSH 服务。

方舟 · Ark