Appearance
SSH 远程服务器操作手册
本文档旨在帮助你掌握 SSH 远程连接的标准化操作流程,包括账号密码登录、免密密钥登录以及如何配置安全加固。
核心原则: 生产环境禁止使用密码登录,强制使用密钥登录。
1. 登录方式对比
| 方式 | 安全性 | 便捷性 | 适用场景 |
|---|---|---|---|
| 密码登录 | ⭐⭐ (易被暴力破解) | ⭐⭐ (需记忆/输入) | 初始设置、临时救援 |
| 密钥登录 | ⭐⭐⭐⭐⭐ (极高) | ⭐⭐⭐⭐⭐ (全自动) | 日常运维、自动化脚本 |
2. 账号密码登录 (Legacy)
适用于服务器刚安装好,尚未配置密钥时的首次连接。
命令格式:
bash
ssh 用户名@服务器IP示例:
bash
ssh hongjy@192.168.1.200
# 系统会提示输入密码 (输入过程不显示字符)常见参数:
-p 2222: 指定端口 (如果修改了默认 22 端口)。-v: 调试模式 (显示详细连接过程,排查连接失败用)。
3. 免密密钥登录 (Recommended)
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_config4.2 关键配置项
建议修改以下参数以提升安全性:
ssh
# 1. 禁用 Root 登录 (必须)
PermitRootLogin no
# 2. 禁用密码验证 (强烈推荐 - 确保密钥可用后再开!)
PasswordAuthentication no
# 3. 启用公钥验证
PubkeyAuthentication yes
# 4. 修改默认端口 (可选,防扫描)
# Port 22224.3 重启服务生效
bash
sudo systemctl restart ssh5. 常见问题 (Troubleshooting)
Q1: 配置了密钥还是要输密码?
- 权限问题: 服务器端的
.ssh目录权限必须严格。bashchmod 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 服务。
