让 SSH 别每次都问口令
如果 SSH 每次连接都弹 Enter passphrase for key,你不必删掉口令(那会让私钥失去保护)。而是把密钥加载进 ssh-agent 一次,它就在你这个会话剩下的时间里缓存解锁后的密钥:
ssh-add ~/.ssh/id_ed25519 你输一次口令;之后每次连接都静默。本文讲 Linux/macOS/Windows 上的 ssh-agent、怎么自动化、以及移动端等价物。
有口令 vs 无口令
口令把磁盘上的私钥加密,所以笔记本被偷也不会连带交出你的服务器。这层保护值得留着。烦人之处——反复输——由 agent 解决,而不是删掉口令。所以:留着口令,用 agent。
用 ssh-agent(Linux/macOS)
# agent 没跑就启动:
eval "$(ssh-agent -s)"
# 加载你的密钥(输一次口令):
ssh-add ~/.ssh/id_ed25519
# 列出已加载的密钥:
ssh-add -l 在 macOS 上,把口令存进 Keychain,重启后也自动加载:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 并加进 ~/.ssh/config,让密钥首次使用时自动加载、无需多想:
Host *
AddKeysToAgent yes
UseKeychain yes 在 Windows 上
启用内置的 OpenSSH agent 服务一次,然后加密钥:
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519 Windows agent 跨重启保留,所以你加一次密钥就忘掉它。
更改或删除口令
如果你确实想改(或给一把没口令的密钥设一个):
ssh-keygen -p -f ~/.ssh/id_ed25519 它问旧口令、再问新口令(留空=删除)。彻底删掉很方便,但意味着任何复制走文件的人就拥有了你的访问权——优先用 agent。
在手机上
移动客户端不暴露 ssh-agent——它们在内部处理等价物。在 TermAI 里密钥存在设备 Keychain,由手机自身的生物识别/密码解锁,所以你不用每次连接重输口令;设备的安全机制就是 agent。你同时得到加密密钥的安全和一点即连。
常见问题
怎么让 SSH 别每次都问口令?
用 ssh-add ~/.ssh/id_ed25519 把密钥加载进 ssh-agent 一次;它在你的会话里缓存解锁后的密钥。在 ~/.ssh/config 加 AddKeysToAgent yes 让它自动。
是不是该直接删掉口令?
最好别——口令把磁盘上的私钥加密。用 ssh-agent 换便利、保住保护。
怎么让口令重启后仍然记住?
macOS 用 ssh-add --apple-use-keychain 和 UseKeychain yes;Windows 把 ssh-agent 服务设为自动启动。密钥就会自己加载。
怎么改密钥的口令?
跑 ssh-keygen -p -f ~/.ssh/id_ed25519;它改口令而不改密钥本身。
快速事实
- 别删口令——它把磁盘上的密钥加密;改用 agent
- 缓存:
ssh-add ~/.ssh/id_ed25519(每会话输一次口令) - 自动:
~/.ssh/config里AddKeysToAgent yes;macOS Keychain / Windows agent 持久化 - 更改:
ssh-keygen -p -f ~/.ssh/key - 移动端:设备 Keychain + 生物识别就是 agent
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.