Windows 配置 SSH 免密登录 Linux 服务器

1. 查看本机是否已有 SSH 密钥

打开 Windows PowerShell:

ls C:\Users\你的Windows用户名\.ssh

如果存在下面两个文件,说明已有 SSH 密钥:

id_rsa
id_rsa.pub

其中:

id_rsa      # 私钥,留在 Windows 本机
id_rsa.pub  # 公钥,复制到 Linux 服务器

2. 如果没有 SSH 密钥,先生成

如果 .ssh 目录下没有 id_rsaid_rsa.pub,执行:

ssh-keygen -t rsa -b 4096

一路回车即可。

生成完成后,再查看:

ls C:\Users\你的Windows用户名\.ssh

正常会看到:

id_rsa
id_rsa.pub

也可以查看公钥内容:

type C:\Users\你的Windows用户名\.ssh\id_rsa.pub

3. 第一次连接服务器

执行:

ssh 远程用户名@服务器IP

第一次连接会提示:

Are you sure you want to continue connecting?

输入:

yes

然后输入服务器密码。

登录成功后退出:

exit

4. 复制 Windows 公钥到 Linux 服务器

在 Windows PowerShell 执行:

type C:\Users\你的Windows用户名\.ssh\id_rsa.pub | ssh 远程用户名@服务器IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

这一步还需要输入一次服务器密码。


5. 测试免密登录

再次执行:

ssh 远程用户名@服务器IP

如果不再要求输入密码,说明配置成功。


6. 配置 SSH 别名

打开 SSH 配置文件:

notepad C:\Users\你的Windows用户名\.ssh\config

写入:

Host myserver
    HostName 服务器IP
    User 远程用户名
    IdentityFile C:\Users\你的Windows用户名\.ssh\id_rsa

以后直接登录:

ssh myserver

7. 常见问题

如果仍然要求输入密码,先检查服务器权限:

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

检查公钥是否写入成功:

cat ~/.ssh/authorized_keys

检查 Windows 本机是否有私钥和公钥:

ls C:\Users\你的Windows用户名\.ssh

需要同时存在:

id_rsa
id_rsa.pub

注意:

IdentityFile 写的是私钥 id_rsa,不是 id_rsa.pub

总结

SSH 免密登录的核心是:

Windows 本机保存私钥
Linux 服务器保存公钥

如果本机没有密钥,先用:

ssh-keygen -t rsa -b 4096

生成密钥。

然后把 Windows 的公钥:

id_rsa.pub

追加到 Linux 服务器的:

~/.ssh/authorized_keys

即可实现免密登录。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐