Leonurus-free

win设置ssh免密登录linux

使用 ssh 手动复制公钥(推荐✅)

步骤 1. 生成 SSH 密钥

PowerShell 里运行:

ssh-keygen -t rsa -b 4096 -C "100.100" -f "$env:USERPROFILE\.ssh\id_rsa_100"

解释:


步骤 2. 将公钥复制到远程服务器

在 PowerShell 中运行:

type $env:USERPROFILE\.ssh\id_rsa_100.pub | ssh ubuntu@192.168.100.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

解释:


步骤 3. 测试免密登录

ssh ubuntu@192.168.100.100

如果不需要输入密码,说明免密成功 ✅

注意:

SSH 公钥认证非常严格,不仅要求:

同时还要求:

如果 /home/ubuntu 权限太宽(比如 777 或 755 有问题),SSH 会拒绝公钥认证。


解决方法

1. 修复用户主目录权限

在服务器上执行:


chmod 700 /home/ubuntu

或者更安全:


chmod 755 /home/ubuntu

然后确认权限:


ls -ld /home/ubuntu

输出应该类似:


drwxr-xr-x  3 ubuntu ubuntu 4096 Sep 1 08:00 /home/ubuntu

注意:不要是 777,否则 SSH 公钥会被拒绝。


2. 修复 .sshauthorized_keys 权限

chmod 700 /home/ubuntu/.ssh
chmod 600 /home/ubuntu/.ssh/authorized_keys
chown -R ubuntu:ubuntu /home/ubuntu/.ssh

3. 重启 SSH 服务


sudo systemctl restart ssh