1. Windows 生成 ED25519 密钥
windows终端执行,一路回车即可
bash
ssh-keygen -t ed25519
C:\Users\xxx\.ssh中会生成公钥和私钥

id_ed25519:私钥
id_ed25519.pub:公钥
2. 上传公钥到linux服务器
linux服务器执行
新建.ssh文件夹
bash
mkdir -p ~/.ssh
复制id_ed25519.pub内所有内容
bash
echo "ssh-ed25519 AAAAB3Nza... ASUS@PC" >> ~/.ssh/authorized_keys
"ssh-ed25519 AAAAB3Nza... ASUS@PC"引号内的内容替换为你复制的id_ed25519.pub内的所有内容
3. 设置linux服务器文件权限
linux服务器执行
.ssh目录仅允许当前用户访问
chmod 700 ~/.ssh
authorized_keys文件仅允许当前用户读写
chmod 600 ~/.ssh/authorized_keys
检查home/xxx目录权限
bash
ls -ld /home/xxx
返回
drwxr-xr-x 48 xxx xxx 4096 10月 27 16:39 /home/xxx
若权限不为drwxr-xr-x(755),会触发 SSH 的安全防护机制,导致公钥认证被直接拒绝。
修改权限
bash
chmod 755 /home/xxx
重启SSH服务
bash
sudo systemctl restart sshd
windows端连接linux服务器测试
bash
ssh xxx@xxx.xxx.xxx.xxx
无需登录密码
后续vscode SSH也同样为免密码连接
其他机器原理相同,复制公钥到家目录的.ssh目录下的authorized_keys中,即可实现免密码SSH连接

