Linux VPS 运维入门:SSH 登录、密钥与安全修改端口

· 更新于 · 发布:iVPSer · Linux教程

刚拿到 Linux VPS,先把 SSH 登录和恢复入口处理好。数据库密码、邮件出站等操作依赖具体软件与防火墙,不适合塞进一组“所有系统通用”的命令,文末另有对应教程。

第一次连接服务器

macOS、Linux 和当前 Windows 都可以直接在终端运行 ssh

# 默认 22 端口
ssh root@203.0.113.10

# 使用其他端口
ssh -p 60022 root@203.0.113.10

输入密码时,终端不会显示字符或星号,这是正常现象。首次连接还会显示主机指纹;如果服务商控制台提供了指纹,先核对再确认。已经连接过的服务器突然出现指纹变化,应先排除重装和中间人攻击,不要直接删除提示继续登录。

图形工具也能用,但不是必需。Windows 用户可使用系统自带终端;确实需要 PuTTY 时,只从 PuTTY 官网下载当前版本。

改用 SSH 密钥

密钥登录比重复输入密码更适合日常运维。先在自己的电脑生成 Ed25519 密钥;已经有可用密钥时跳过这一步。

ssh-keygen -t ed25519 -C "work-laptop"

把公钥写入服务器账户:

ssh-copy-id root@203.0.113.10

# 非默认端口
ssh-copy-id -p 60022 root@203.0.113.10

用户名不一定是 root,请替换成实际账户。执行后另开一个终端验证密钥能登录,再考虑关闭密码登录。更完整的普通用户、sudo 与 SSH 加固顺序见服务器初始安全配置

如果精简系统没有 ssh-copy-id,可以在服务器上手动创建 ~/.ssh/authorized_keys,并确认 .ssh 文件夹权限为 700、文件权限为 600。不要把私钥上传到服务器,也不要通过聊天工具发送私钥。

修改 SSH 端口前的准备

改端口能减少扫描日志和绕开少数网络限制,但不能代替密钥、源 IP 限制和及时更新。动手前先确认:

  1. 服务商控制台或带外终端仍能登录;
  2. 当前 SSH 会话保持打开;
  3. 主机防火墙和云平台防火墙都允许新端口。

/etc/ssh/sshd_config 或发行版启用的 sshd_config.d 路径下设置端口,例如:

Port 60022

Ubuntu 默认会先读取 /etc/ssh/sshd_config.d/*.conf。同一选项出现多次时,前面读到的值可能先起作用,因此改完要看实际生效结果,单看某一行配置容易误判。

sudo sshd -t
sudo sshd -T | grep '^port '

第一条没有输出才表示语法检查通过。第二条应显示计划使用的端口。

放行新端口并重启服务

使用 UFW 的 Ubuntu、Debian:

sudo ufw allow 60022/tcp
sudo systemctl restart ssh.service

使用 firewalld 的 RHEL、Rocky Linux、AlmaLinux:

sudo firewall-cmd --permanent --add-port=60022/tcp
sudo firewall-cmd --reload
sudo systemctl restart sshd.service

启用 SELinux 的系统还要登记端口。若端口已存在,用 -m 修改;不存在则用 -a 添加。

sudo semanage port -a -t ssh_port_t -p tcp 60022

不要马上断开原会话。另开终端运行 ssh -p 60022 用户名@服务器IP,确认能登录后,再移除旧端口规则。云平台安全组与系统防火墙是两层配置,任意一层漏放都会失败。

SSH 连不上时从哪一层查

“能 ping 通”只说明 ICMP 可能可达,不能证明 SSH 端口和服务正常。按下面顺序检查,通常比反复改配置更快:

# 服务是否运行
sudo systemctl status ssh.service   # Ubuntu / Debian
sudo systemctl status sshd.service  # RHEL 系

# 主机实际监听哪些端口
sudo ss -lntp | grep ssh

# 最近的服务日志
sudo journalctl -u ssh.service -n 50 --no-pager
sudo journalctl -u sshd.service -n 50 --no-pager

然后核对主机防火墙、云平台防火墙和本地网络。如果已经无法通过 SSH 进入,只能从服务商控制台恢复;这也是修改端口前必须保留恢复入口的原因。

其他常见操作

文中的 SSH 配置与服务名已按 Ubuntu OpenSSH 文档复核。其他发行版若修改了软件包或服务名,以系统当前文档和 systemctl list-unit-files 的结果为准。