一、完整操作流程(只需 2~3 分钟)
在你的电脑(本地)生成密钥(推荐 ed25519,主流最优)
ssh-keygen -t ed25519 -C "你的邮箱或备注"→ 直接回车三下(默认路径 + 可空密码)就行,想安全就设个 passphrase 也行
一键把公钥上传到服务器(最推荐写法)
ssh-copy-id user@服务器IP # 或者明确指定密钥(推荐永远这样写,永不出错) ssh-copy-id -i ~/.ssh/id_ed25519.pub user@服务器IP→ 这一步会让你输一次密码,输完就彻底免密了
测试(重新开一个终端)
ssh user@服务器IP→ 直接进去,不输密码 → 成功!
大功告成!99.99% 的情况到这里就结束了。
二、进阶优化(强烈推荐,省一辈子时间)
在本地创建或编辑 ~/.ssh/config:
Host myserver # 你随便取的名字,越短越好
HostName 123.123.123.123 # 或者域名
User root # 或者 ubuntu、deploy 等
Port 22 # 如果改过端口就写实际端口
IdentityFile ~/.ssh/id_ed25519
# 可选:超时自动断开、保持长连接
ServerAliveInterval 60
以后只敲两个字就登录:
ssh myserver
三、注意事项
| 场景 | 解决办法 |
|---|---|
| 服务器太老,不支持 ed25519 | 改用 RSA:ssh-keygen -t rsa -b 4096 -o -a 100 然后再 ssh-copy-id |
| 服务器改了端口(比如 2222) | ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@ip |
| 没有 ssh-copy-id 命令 | 手动:`cat ~/.ssh/id_ed25519.pub |
| 还是要密码(极少) | 登录服务器后跑一次:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys |
四、小结
| 项目 | 推荐选择(优先级) | 命令一句话记住 |
|---|---|---|
| 密钥类型 | ed25519 > ed25519-sk > rsa 4096 | ssh-keygen -t ed25519 |
| 上传公钥 | 永远用 ssh-copy-id -i | ssh-copy-id -i ~/.ssh/id_ed25519.pub user@ip |
| 权限 | ssh-copy-id 自动修好,不用管 | 完全不用手动 chmod |
| 日常登录 | 配置 ~/.ssh/config 别名 | 以后只敲 ssh 别名 |