Windows 免密 SSH 登录 Ubuntu配置全流程(可复用到 VS Code)

一、场景与目标

  • 客户端:Windows(OpenSSH)

  • 服务端:Ubuntu(OpenSSH server)

  • 目标:ssh 用户名@ip(或别名 ssh name)时不再输入密码,改用 SSH Key(publickey)。

二、Windows 端生成 SSH 密钥

  1. 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_ed25519id_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"

这条命令做了四件事:

  1. 创建远端 ~/.ssh

  2. 设置目录权限 700

  3. 追加公钥到 ~/.ssh/authorized_keys

  4. 设置文件权限 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

五、 验证免密是否真正生效(严谨验收)

  1. 直接登录验证

ssh ccslab

连接成功:无需密码

  1. -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)

ssh cqt@192.168.1.114

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 免密登录

不再需要登录密码

相关推荐
蝎子莱莱爱打怪2 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
埃博拉酱2 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
DianSan_ERP2 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅2 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒2 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
欧云服务器2 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
智渊AI2 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
zhangfeng11332 天前
趋动云 如何ssh登录 服务区 项目server
运维·人工智能·ssh
ZeroNews内网穿透2 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全
失重外太空啦2 天前
nginx
运维·nginx