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_configPubkeyAuthentication 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
相关推荐
李少兄4 小时前
企业级数据库自动化备份
运维·数据库·mysql·自动化
sugar15694 小时前
Trae ied为项目完善Docker Compose本地开发运行测试
运维·docker·容器
正大数据恢复4 小时前
亲测分享专业服务器数据恢复实践经验
运维·服务器
云智慧AIOps社区4 小时前
AI驱动制造业智能化变革:云智慧在苏州CIO研讨会分享运维破局之道
运维·人工智能·aiops·ai agent·sre·sre 智能体
鸠摩智首席音效师15 小时前
如何使用 docker exec 在容器中运行命令 ?
运维·docker·容器
似水এ᭄往昔15 小时前
【Linux】自动化构建-make/Makefile
linux·运维·服务器·ubuntu
顶点多余16 小时前
Linux“信号“从硬件到软件详解
linux·运维·服务器
勘察加熊人16 小时前
ai飞卢小说自动化处理工作流获得提问素材
运维·自动化
瀚高PG实验室17 小时前
rpm包安装报错:cannot open Packages index using db5 - Cannot allocate memory (12)
linux·运维·服务器·瀚高数据库