免密连接ssh
第一步:在本地生成密钥对(三系统命令通用)
在各自的终端(Windows 请用 PowerShell 或 CMD)执行:
bash
ssh-keygen -t ed25519 -C "your_email@example.com"
- 一路回车即可(不设密码短语更省事,设了更安全)。
- 生成位置(注意区分):
- macOS / Linux:
~/.ssh/id_ed25519(私钥)和~/.ssh/id_ed25519.pub(公钥) - Windows:
C:\Users\你的用户名\.ssh\id_ed25519和.pub
- macOS / Linux:
第二步:将公钥写入远程 Linux 服务器的指定目录
远程服务器上的固定写入路径永远是:~/.ssh/authorized_keys。上传方式三种系统各有最佳实践:
| 操作系统 | 推荐上传命令(一步到位) | 手动写入法(通用备选) |
|---|---|---|
| macOS | 自带 ssh-copy-id,最优雅: ssh-copy-id user@服务器IP |
1. cat ~/.ssh/id_ed25519.pub 复制内容。 2. ssh user@IP 登录服务器。 3. echo "粘贴公钥内容" >> ~/.ssh/authorized_keys |
| Linux | 同上,原生自带: ssh-copy-id user@服务器IP |
同上(cat + echo 追加) |
| Windows | 无原生 ssh-copy-id,用管道代替: `type %USERPROFILE%.ssh\id_ed25519.pub | ssh user@IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"` |
第三步:修改服务器目录权限(杜绝免密失效)
这一步90%的失败都源于此,完成上传后,务必登录 Linux 服务器执行:
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
第四步:配置本地简化文件(可选但推荐)
为了避免每次输入 ssh -p 端口 user@长IP,三系统均在本地用户目录下的 ~/.ssh/config 文件中配置(Windows 路径为 C:\Users\你的用户名\.ssh\config):
ssh-config
Host myserver
HostName 192.168.1.100
User root
Port 22
IdentityFile ~/.ssh/id_ed25519 # Windows 改为 C:/Users/用户名/.ssh/id_ed25519
配置后,直接输入 ssh myserver 即可免密连接。

浙公网安备 33010602011771号