
SSH(Secure Shell)是一种用于远程连接服务器的加密协议。租用 VPS 后,您没有屏幕和鼠标——一切操作都通过 SSH 命令行完成,包括安装软件、配置服务和管理文件。本指南介绍如何从 Windows 和 macOS 通过 SSH 连接 VPS,以及如何进行安全配置。
连接前的准备
- IP 地址:VPS 的 IP(购买后在欢迎邮件中提供)
- 用户名:Linux VPS 通常为
root - 密码或 SSH 私钥
- 端口:默认为
22
第一步:从 Windows 连接(方法一:PuTTY)
- 从 putty.org 下载 PuTTY
- 打开 PuTTY → 在 Host Name 栏填入 VPS IP
- 端口填 22,连接类型选 SSH
- 点击 Open → 首次连接时点击「是」确认安全警告
- 登录用户名输入
root→ 输入密码
第二步:从 Windows 连接(方法二:Windows 终端)
Windows 10 和 Windows 11 内置 SSH 客户端,直接打开命令提示符或 PowerShell 输入:
ssh root@YOUR_VPS_IP
按提示输入密码即可。
第三步:从 macOS 或 Linux 连接
打开终端(macOS:按 Cmd+Space,搜索 Terminal),运行:
ssh root@YOUR_VPS_IP
如需使用 SSH 密钥连接:
ssh -i /path/to/private_key root@YOUR_VPS_IP
登录后常用命令
ls -la— 列出文件和目录pwd— 显示当前目录cd /var/www/html— 切换目录apt update && apt upgrade— 更新系统软件包(Ubuntu/Debian)df -h— 查看磁盘使用情况free -h— 查看内存使用情况exit— 退出 SSH 会话
提升安全性:更改 SSH 端口
将默认端口从 22 改为其他端口,可有效减少自动化机器人扫描:
nano /etc/ssh/sshd_config
找到 #Port 22 这一行 → 改为 Port 2222(或其他未使用的端口)→ 重启 SSH:systemctl restart sshd
最佳实践:日常操作应避免直接使用 root 账户。建议创建普通用户并加入 sudo 组:先运行 adduser myuser,再运行 usermod -aG sudo myuser,之后用该用户登录进行日常工作。
配置 SSH 密钥认证
SSH 密钥认证以密码学密钥对取代密码登录:私钥保存在本地机器,公钥上传到 VPS。每次连接自动验证,无需输入密码,也不会暴露可能被截获的凭据。
生成 SSH 密钥对
在本地机器(Windows 终端、macOS 终端或 Linux)运行:
ssh-keygen -t ed25519 -C "[email protected]"
系统会询问保存路径和是否设置密码短语(强烈建议设置)。完成后生成两个文件:
~/.ssh/id_ed25519— 私钥(切勿分享给任何人)~/.ssh/id_ed25519.pub— 公钥(上传到 VPS)
将公钥复制到 VPS
# Using ssh-copy-id (macOS / Linux)
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@YOUR_VPS_IP
# Manual method
cat ~/.ssh/id_ed25519.pub | ssh root@YOUR_VPS_IP \
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
先测试密钥登录是否成功,再通过在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no 并重启 SSH 来禁用密码登录。
配合 SSH 使用 UFW 防火墙
防火墙是保护 VPS 的第一道防线。UFW(简易防火墙)让您只需几条命令就能管理开放端口。最关键的一步是在启用 UFW 之前先允许 SSH 访问——否则您将把自己锁在外面。
# Install UFW (if not already present)
apt install ufw -y
# Allow SSH first (CRITICAL — do this before enabling)
ufw allow 22/tcp
# Allow web server ports
ufw allow 80/tcp
ufw allow 443/tcp
# Enable the firewall
ufw enable
# Check status
ufw status verbose
| 服务 | 端口 | UFW 命令 | 说明 |
|---|---|---|---|
| SSH | 22 | ufw allow 22/tcp | 启用前必须先允许 |
| HTTP | 80 | ufw allow 80/tcp | 网页流量 |
| HTTPS | 443 | ufw allow 443/tcp | SSL/TLS 流量 |
| MySQL | 3306 | ufw deny 3306 | 保持私有,通过 SSH 隧道访问 |
通过 SSH 传输文件:SCP 与 SFTP
SSH 不仅用于终端会话,还支持两种安全文件传输协议:SCP(安全复制)适合快速命令行传输,SFTP(SSH 文件传输协议)适合交互式文件管理。两者都通过同一 SSH 通道加密传输所有数据。
SCP — 快速命令行传输
# Upload a file from your machine to the VPS
scp /path/to/local/file.zip root@YOUR_VPS_IP:/var/www/html/
# Download a file from the VPS to your machine
scp root@YOUR_VPS_IP:/var/log/nginx/error.log ~/Downloads/
# Copy an entire directory (use -r flag)
scp -r root@YOUR_VPS_IP:/var/www/html/mysite ~/backup/
SFTP — 交互式文件管理
启动 SFTP 会话:
sftp root@YOUR_VPS_IP
在 SFTP Shell 中:ls 列出远程文件,lls 列出本地文件,put file.txt 上传,get file.txt 下载,exit 退出会话。FileZilla、Cyberduck 等图形界面客户端同样支持 SFTP,可拖放操作。
监控 SSH 会话与安全日志
定期查看 SSH 日志,可以了解是否存在未经授权的登录尝试。开放 22 端口的服务器会持续遭受来自全球僵尸网络的自动扫描和暴力破解——即使是全新服务器也不例外。
# Show last 20 successful logins
last -n 20
# Show failed login attempts (Ubuntu / Debian)
grep "Failed password" /var/log/auth.log | tail -30
# Show failed login attempts (CentOS / AlmaLinux)
grep "Failed password" /var/log/secure | tail -30
# Show currently connected sessions
who
# View SSH daemon log via journald
journalctl -u sshd -n 50 --no-pager
| 日志文件 | 操作系统 | 内容说明 |
|---|---|---|
| /var/log/auth.log | Ubuntu / Debian | SSH 登录、sudo、PAM |
| /var/log/secure | CentOS / AlmaLinux | SSH 登录、sudo、su |
| journalctl -u sshd | 所有 systemd 发行版 | SSH 守护进程详细事件 |
如果发现来自同一 IP 的多次失败尝试,可以安装 Fail2ban 自动封锁恶意 IP,或手动执行 ufw deny from BAD_IP_ADDRESS 进行封锁。
常见问题解答
SSH 密钥比密码更安全吗?
SSH 密钥使用超长且无法猜测的密钥对,而密码可能被猜测或暴力破解。配置好密钥后,建议禁用密码登录以获得最高安全性。
在 Windows 上使用 SSH 需要安装软件吗?
现代 Windows 在命令提示符和 PowerShell 中已内置 ssh 命令,无需额外安装。PuTTY 则是另一个带图形界面的选择,方便管理多个连接。
SSH 使用哪个端口?可以更改吗?
默认端口为 22,可以更改以减少随机攻击,但同时应配合 SSH 密钥和防火墙使用——不要只靠更改端口来保护服务器。