1. 为什么需要SSH免密码登录?
每次连接远程服务器都要输入密码,对于开发者来说简直是噩梦。想象一下你正在调试代码,每5分钟就要重新输入一次密码,不仅打断思路,还容易输错。更糟的是,如果你需要自动化部署脚本,密码输入环节会让整个流程卡住。
我在管理十几台服务器时,最初也是傻傻地每次手动输密码,直到有一天连续输错3次被服务器锁定,才下定决心研究免密登录方案。现在我的开发环境里,所有服务器连接都是秒级响应,VSCode里点一下就能直接编辑远程文件,效率提升至少300%。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 密钥生成:安全与性能的平衡术
2.1 算法选择:ED25519 vs RSA
在PowerShell运行ssh-keygen -t ed25519时,那个ed25519参数可不是随便写的。这是经过多次实践验证的最佳选择:
- 安全性:ED25519采用椭圆曲线加密,等效RSA 3072位强度,但密钥长度只有256位
- 性能:签名速度比RSA快10倍,验证速度快15倍
- 兼容性:所有主流Linux发行版和Windows 10+都原生支持
注意:如果必须使用RSA(比如连接老式设备),至少要用
-t rsa -b 4096生成4096位密钥。默认的2048位RSA现在已经不够安全了。
2.2 密钥生成实操细节
执行命令后会遇到几个关键点:
code复制Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\你的用户名\.ssh\id_ed25519):
这里直接回车用默认路径就好,我有次手贱改了路径,结果VSCode死活找不到密钥,排查了2小时才发现是路径问题。
接下来会问:
code复制Enter passphrase (empty for no passphrase):
这个密码短语是保护密钥文件的第二道防线。我的建议是:
- 个人开发环境可以直接回车留空
- 生产环境一定要设置复杂短语,并配合
ssh-agent管理
3. 服务器端配置:那些容易踩的坑
3.1 公钥上传的正确姿势
很多教程只告诉你要把公钥内容复制到authorized_keys,但没
