ssh配置

SSH 配置汇总整理

这份文档主要整理两个核心步骤:

  1. SSH 的密钥登录流程配置
  2. 服务器上 SSH 配置更改,比如更改端口、关闭密码登录

内容根据当前目录下已有文档归纳,代码块尽量保持原样,只做顺序整理和说明。

0. SSH 配置流程图

flowchart TD
A[开始] --> B[服务器上生成 SSH 密钥对]
B --> C[把公钥写入 ~/.ssh/authorized_keys]
C --> D[设置 .ssh 和 authorized_keys 权限]
D --> E[把私钥保存到本地]
E --> F[先测试密钥登录]
F --> G{能否正常登录}
G -- 否 --> H[检查公钥 用户名 权限 端口]
H --> F
G -- 是 --> I[编辑 /etc/ssh/sshd_config]
I --> J[按需修改 SSH 端口]
J --> K[关闭密码登录 保留公钥登录]
K --> L[重启 SSH 服务]
L --> M[确认防火墙 安全组 云防火墙已放行新端口]
M --> N[新开终端用新端口重新测试]
N --> O{新连接成功}
O -- 否 --> P[不要关闭当前会话 回滚或排查]
O -- 是 --> Q[完成]

1. SSH 密钥登录的原理

SSH 密钥登录的核心就是生成一对密钥:

  • 公钥放到服务器对应用户的 ~/.ssh/authorized_keys
  • 私钥保存在你自己的本地电脑

假设你要登录的用户是 root

/root/.ssh/authorized_keys

普通用户则是:

/home/username/.ssh/authorized_keys

2. 服务器上生成密钥并写入 authorized_keys

已有文档里的做法是先在服务器上检查 ~/.ssh 目录,如果有不需要的密钥,先清理掉,然后生成新的密钥。

在服务器上执行:

ssh-keygen -t ed25519 -C "my_server_key"

然后执行:

cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

这样就把公钥写入服务器的 authorized_keys 里了。

3. 把私钥保存到本地

私钥要复制到你自己的本地电脑,而且要复制完整。

私钥权限也要正确:

chmod 600 ~/id_ed25519_server

私钥自己保存好,不要泄露。

4. 先测试 SSH 密钥登录

先用私钥测试是否能正常登录服务器。

例如:

ssh -i ~/id_ed25519_server zxz@192.168.10.100

如果服务器 SSH 端口不是默认的 22,那就加上 -p

ssh -p 6000 zxz@124.221.129.28

也可以同时指定私钥和端口:

ssh -i ~/id_rsa_tenxun -p 6000 zxz@124.221.129.28

这里的重点是:

  1. 先确认密钥登录真的能用
  2. 再去改 SSH 服务端配置
  3. 不要还没测试成功就直接关闭密码登录

5. 服务器上的 SSH 配置文件

配置文件路径:

sudo vim /etc/ssh/sshd_config

这一步主要是改 SSH 服务端的登录方式和端口。

6. 如果暂时允许密码登录

如果你还在过渡阶段,原文档里给的配置是:

PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes

这表示:

  • 允许 root 登录
  • 允许密码登录
  • 允许公钥登录

7. 改成只允许密钥登录

如果已经确认密钥登录没问题,就可以改成只允许密钥登录:

PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes

这表示:

  • root 不允许用密码登录
  • 禁止密码登录
  • 允许公钥登录

8. 更改 SSH 端口

已有内容里举例用到了非默认端口,比如:

ssh -p 6000 zxz@124.221.129.28

所以在服务端配置里,如果你要改端口,通常就是在 sshd_config 里把端口改掉,然后重启 SSH 服务。

文档里虽然没有单独给出 Port 的配置块,但实际理解上就是类似这种改法:

Port 6000

如果你改了端口,那么以后连接时就要对应带上 -p 参数,例如:

ssh -p 6000 zxz@124.221.129.28

另外要记得,如果改了 SSH 端口,还要同步检查服务器防火墙、安全组、云防火墙是否已经放行这个新端口,不然即使 sshd_config 改对了,也可能重新连不上。

9. 修改 SSH 配置后的顺序

这里整理成一个比较顺的流程:

  1. 先在服务器上生成密钥
  2. 把公钥写入 ~/.ssh/authorized_keys
  3. 设置 .sshauthorized_keys 权限
  4. 把私钥保存到本地,并设置好权限
  5. 用私钥先测试登录
  6. 编辑 /etc/ssh/sshd_config
  7. 如果要改端口,就先改端口
  8. 如果要关闭密码登录,就在确认密钥登录成功后再改
  9. 重启 SSH 服务
  10. 用新的端口重新测试登录

10. 最终要记住的核心点

  • 密钥登录的本质是“服务器保存公钥,本地保存私钥”
  • 服务器端常见关键文件是 ~/.ssh/authorized_keys
  • 私钥权限通常要正确,否则 SSH 会拒绝使用
  • /etc/ssh/sshd_config 是 SSH 服务端的核心配置文件
  • 常见 SSH 服务端修改就是:
    • 修改端口
    • 关闭密码登录
    • 保留公钥登录
  • 一定是先验证密钥登录成功,再关闭密码登录