三步搞定免密码 SSH
"免密码"SSH 不是没有安全——是用密钥登录、不再每次输密码。它既更方便也更安全。三步:生成密钥对、把公钥复制到服务器、(可选)关掉密码登录让只有密钥能用。下面是全流程。
第 1 步 —— 生成密钥对
在你的机器上,创建一把 Ed25519 密钥(现代、快、安全——见 Ed25519 vs RSA):
ssh-keygen -t ed25519 -C "you@example.com" 回车接受默认位置。它会问你设个口令(passphrase)——它把磁盘上的私钥加密。要真正一步登录可以留空,但口令 + ssh-agent 能兼得安全与便利。这会生成两个文件:id_ed25519(私钥——永不外传)和 id_ed25519.pub(公钥——放到服务器上)。
第 2 步 —— 把公钥复制到服务器
公钥那半必须在服务器的 ~/.ssh/authorized_keys 里。简单做法:
ssh-copy-id user@host 它让你最后输一次密码、装好密钥。(没有 ssh-copy-id,或在 Windows?见 完整复制密钥指南。)现在重连——ssh user@host 应该不用密码就登进去。还要密码的话,看 SSH 还在要密码。
第 3 步 —— 关掉密码登录(可选,推荐)
密钥登录生效后,你可以彻底禁用密码,让暴破毫无意义。在服务器 /etc/ssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes 然后 sudo systemctl restart ssh。重要:断开前,先在另一个会话里确认密钥登录可用——否则一个失误就可能把自己锁在外面。再配上 禁用 root 登录 和 fail2ban,基线就稳了。
为什么密钥胜过密码
密钥是一个 256 位的秘密,从不传到服务器——传的只是一个签名——所以线上没有东西可被钓鱼或暴破。密码能被猜;机器人每天用上百万个密码轰炸 22 端口。只用密钥认证时,那些尝试根本不可能成功。更多权衡:SSH 密钥 vs 密码。
在手机上免密码 SSH
同样的模型在移动端也成立,好的客户端把它变成一个流程:TermAI 在设备 Keychain 里生成 Ed25519 密钥,一键部署到服务器把公钥装进 authorized_keys——第 1、2 步无需终端。之后你用密钥连接,不用在触屏键盘上敲密码。
常见问题
怎么设置免密码 SSH?
用 ssh-keygen -t ed25519 生成密钥,用 ssh-copy-id user@host 把公钥复制到服务器,然后重连——用密钥登录、无需密码。可选地在 sshd_config 里禁用密码认证。
免密码 SSH 安全吗?
比密码更安全——密钥从不过网,无法被钓鱼或暴破。彻底禁用密码认证后,暴破尝试根本不可能成功。
密钥要设口令吗?
最好设——它把磁盘上的私钥加密。用 ssh-agent 让你每个会话只输一次、仍是一步登录。
禁用密码会把自己锁在外面吗?
只有在密钥登录还没生效时才会。禁用密码认证前,务必在另一个会话里确认密钥能登。
快速事实
- 三步:生成密钥 → 把公钥复制到服务器 →(可选)禁用密码认证
- 生成:
ssh-keygen -t ed25519 - 安装:
ssh-copy-id user@host - 加固:sshd_config 里
PasswordAuthentication no(先确认密钥登录可用) - 移动端:一键生成+部署(TermAI),然后密钥登录
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.