Windows SSH 免密码登录 Ubuntu

Windows SSH 免密码登录 Ubuntu 快速指南

1. Windows 生成密钥(PowerShell)

powershell 复制代码
ssh-keygen -t ed25519 -f $env:USERPROFILE\.ssh\id_ed25519
# 提示输入口令时直接回车两次(留空)

2. 上传公钥到 Ubuntu(一次输入密码)

powershell 复制代码
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && umask 077 && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

将 user@host 替换为实际用户名和主机 IP。

3. Ubuntu 端修复权限(重要)

bash 复制代码
# 取消 home 目录对组/其他的写权限
chmod go-w ~
chmod 750 ~

# 确保 .ssh 和 authorized_keys 权限正确
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# 确保属主正确
sudo chown -R $(whoami):$(whoami) ~/.ssh

4. 测试登录(Windows)

powershell 复制代码
ssh user@host
# 应该不再要求密码

常见问题排查

问题 解决方案
仍要求密码 检查 home/~/.ssh 权限;运行 chmod go-w ~ 和 chmod 700 ~/.ssh
公钥格式错误 修复 CRLF:dos2unix ~/.ssh/authorized_keys
sshd 不允许公钥 确保 /etc/ssh/sshd_config 有 PubkeyAuthentication yes
权限被拒绝 运行 chown -R $(whoami):$(whoami) ~/.ssh

调试(如需详细信息)

Windows 客户端查看详细输出:

powershell 复制代码
ssh -vvv user@host

Ubuntu 服务器查看登录日志:

bash 复制代码
sudo tail -n 50 /var/log/auth.log

可选:禁用密码登录(确认公钥工作后)

bash 复制代码
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl reload ssh
相关推荐
IT技术分享社区7 分钟前
在 Windows 上跑未改动的 Linux 程序:微软 LiteBox v0.1 把这件事变简单了
linux·运维·windows·microsoft·开源
迪康妍妍15 分钟前
终端安全实战:用迪康终端安全管理系统实现U盘四分档管控与全量审计
android·运维·网络·安全·电脑
Qt云程序员20 分钟前
按钮是图片、系统没接口?我用找图加OCR把它自动化了
运维·自动化·ocr
派小心.35 分钟前
多端数据分析平台的漏斗可以跨端搭建吗?5 步搭出跨端转化漏斗
大数据·运维·服务器·前端·数据分析
芷栀夏39 分钟前
极空间部署Photopea:Docker运行、网页修图与多设备使用
运维·docker·容器
见闻小天地44 分钟前
数据中心柴发出口保护怎么选?Emax 与 Tmax XT 的定位与分工
大数据·运维·人工智能·业界资讯
迈威通信1 小时前
迈威 MISCOM8212GP-4XGF-8GTPoE90-DC48 接入层实践:高密度 PoE++ 与万兆上行的整合方案
运维·网络·信息与通信
小小的木头人1 小时前
CentOS 7.9 离线安装 NVIDIA Container Toolkit:1.14.0 与 1.20.1 两种版本方案
linux·运维·centos
哭哭啼1 小时前
Linux 资源紧缺模拟:CPU、内存、磁盘与文件描述符压力测试
linux·运维·压力测试
缘友一世1 小时前
校园网有线网络排查(NetworkManager与netplan的坑)
ubuntu·校园网