VPS 改为密钥登录的完整过程

你这次的情况是:VPS 商家面板不提供密钥添加功能,所以需要自己在本地生成密钥,再手动把公钥写进 VPS。

1. 本地生成密钥

你 Windows 自带的 ssh-keygen 有问题,但你的 Git 里有可用的 ssh-keygen

D:\Git\usr\bin\ssh-keygen.exe

所以你用的是这个命令生成:

New-Item -ItemType Directory -Force "$env:USERPROFILE\.ssh" | Out-Null

& "D:\Git\usr\bin\ssh-keygen.exe" -t ed25519 -C "ccs-vps-key" -f "$env:USERPROFILE\.ssh\ccs_vps_ed25519"

生成过程中提示:

Enter passphrase

可以直接回车,不设置密码。

你已经成功生成了两份文件:

私钥:
C:\Users\sunop\.ssh\ccs_vps_ed25519

公钥:
C:\Users\sunop\.ssh\ccs_vps_ed25519.pub

记住:

私钥:留在自己电脑上,不能泄露
公钥:可以放到 VPS 上

2. 查看公钥内容

在 PowerShell 执行:

type "C:\Users\sunop\.ssh\ccs_vps_ed25519.pub"

会输出一整行,类似:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...... ccs-vps-key

复制这一整行。

不要复制私钥文件内容,也不要把:

C:\Users\sunop\.ssh\ccs_vps_ed25519

发给别人。

3. 用密码登录 VPS

你现在还没有配置好密钥,所以先用原来的密码登录:

& "D:\Git\usr\bin\ssh.exe" root@你的VPS_IP

如果系统自带 ssh 后续恢复正常,也可以用:

ssh root@你的VPS_IP

4. 在 VPS 上添加公钥

进入 VPS 后执行:

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

然后把刚才复制的公钥整行粘贴进去。

保存方式:

Ctrl + O
回车
Ctrl + X

然后设置权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

这一步很重要。权限不对时,SSH 可能会拒绝读取密钥。

5. 测试密钥登录

不要关闭当前已经登录 VPS 的窗口。

重新打开一个 PowerShell,执行:

& "D:\Git\usr\bin\ssh.exe" -i "C:\Users\sunop\.ssh\ccs_vps_ed25519" root@你的VPS_IP

如果能登录,说明密钥登录已经成功。

这里用的是私钥:

C:\Users\sunop\.ssh\ccs_vps_ed25519

VPS 上保存的是公钥:

~/.ssh/authorized_keys

6. 确认成功后,再关闭密码登录

确认密钥登录没问题后,再改 SSH 配置。

在 VPS 上执行:

nano /etc/ssh/sshd_config

找到或添加:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password

含义是:

PubkeyAuthentication yes

允许密钥登录。

PasswordAuthentication no

禁止密码登录。

PermitRootLogin prohibit-password

允许 root 用密钥登录,但禁止 root 用密码登录。

保存后先检查配置:

sshd -t

如果没有输出,说明配置语法没问题。

然后重启 SSH 服务:

systemctl restart ssh

如果提示没有这个服务,再试:

systemctl restart sshd

7. 最终登录命令

以后登录这台 VPS,用:

& "D:\Git\usr\bin\ssh.exe" -i "C:\Users\sunop\.ssh\ccs_vps_ed25519" root@你的VPS_IP

可以把 你的VPS_IP 换成实际 IP。

8. 最重要的注意事项

不要删除本地私钥:

C:\Users\sunop\.ssh\ccs_vps_ed25519

不要泄露本地私钥。

不要在密钥登录测试成功前关闭密码登录。

不要在密钥登录测试成功前关闭当前 VPS SSH 窗口。

如果以后重装系统、本地换电脑,原来的私钥没了,而 VPS 又关闭了密码登录,就可能登录不上。

标签: none

添加新评论