一、场景与目标
-
客户端:Windows(OpenSSH)
-
服务端:Ubuntu(OpenSSH server)
-
目标:
ssh 用户名@ip(或别名ssh name)时不再输入密码,改用 SSH Key(publickey)。
二、Windows 端生成 SSH 密钥
- win+r打开 CMD

2.输入指令
ssh-keygen -t ed25519 -a 64

一路回车采用默认路径(推荐):
-
私钥:
C:\Users\lenovo\.ssh\id_ed25519 -
公钥:
C:\Users\lenovo\.ssh\id_ed25519.pub

检查是否生成成功:
dir "%USERPROFILE%\.ssh"
你应该能看到 id_ed25519 和 id_ed25519.pub。

三、把 Windows 公钥写入 Ubuntu 的 authorized_keys
最稳的办法是一条命令追加公钥(会让你输入一次 Ubuntu 密码,这是最后一次):
type "%USERPROFILE%\.ssh\id_ed25519.pub" | ssh cqt@192.168.1.114 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

这条命令做了四件事:
-
创建远端
~/.ssh -
设置目录权限
700 -
追加公钥到
~/.ssh/authorized_keys -
设置文件权限
600
四、在 Windows 配置 SSH 别名(推荐)
1.编辑配置文件:
notepad "%USERPROFILE%\.ssh\config"
原始配置文件如下:

写入(注意ccslab需要自己命名):
Host ccslab
HostName 192.168.1.114
User cqt
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes

这样以后你只需要:
ssh ccslab
五、 验证免密是否真正生效(严谨验收)
- 直接登录验证
ssh ccslab
连接成功:无需密码
- 用
-v看认证方式(最权威)
ssh -v ccslab
你要看到类似关键行:
-
Offering public key: ... id_ed25519 -
Server accepts key: ... -
Authenticated ... using "publickey".pasted
出现这句就等于"盖章":确实是密钥登录,而不是密码。

此前我们使用VScode打开每连接都需要密码,现在再重新打开就不用重新输入了。
六、总结
1.生成key
ssh-keygen -t ed25519 -a 64
2.推公钥到 Ubuntu:
type "%USERPROFILE%\.ssh\id_ed25519.pub" | ssh cqt@192.168.1.114 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
3.配置别名:
在新电脑 CMD 执行:
notepad "%USERPROFILE%\.ssh\config"
然后替换为:
Host ccslab
HostName 192.168.1.114
User cqt
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
4.验收
ssh -v ccslab
七、Windows系统免密登录同一个Ubuntu系统多个账户
1.在 Windows 上复制你的公钥内容
type "%USERPROFILE%\.ssh\id_ed25519.pub"
把输出整行复制下来(以 ssh-ed25519 开头那行)。

可以看到公钥为:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIuqok83DZM1iuj5c/iLz8cZryk7YoPe7ZJ3IUO+CJxO lenovo@LAPTOP-75N2RIOM
2.免密登录到 Ubuntu(cqt)

3.在 Ubuntu 上切到 zwj 并配置 authorized_keys
3.1切换账号
sudo -iu zwj
输入mkdir -p ~/.ssh
mkdir -p ~/.ssh
输入chmod 700 ~/.ssh
chmod 700 ~/.ssh
输入nano ~/.ssh/authorized_keys
nano ~/.ssh/authorized_key

4.编辑授权公钥列表文件
将公钥完整复制过来

5.输入其它指令并退出
输入chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6.回到 Windows 测试 zwj 免密登录
不再需要登录密码
