教程

让 SSH 别每次都问口令(ssh-agent)

为安全留着密钥口令,但别每次连接都输——用 ssh-agent 加载一次。Linux、macOS、Windows 的设置,以及怎么改口令和移动端等价物。

CC Chen Chen· 创始人·2026 年 6 月 14 日·阅读 5 分钟

让 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。你同时得到加密密钥的安全和一点即连。

手机用 Keychain 里的密钥连接,不弹口令
在手机上,设备 Keychain 扮演 ssh-agent 的角色:密钥由手机生物识别保护,连接是一点——不用重输口令。

常见问题

怎么让 SSH 别每次都问口令?
ssh-add ~/.ssh/id_ed25519 把密钥加载进 ssh-agent 一次;它在你的会话里缓存解锁后的密钥。在 ~/.ssh/configAddKeysToAgent yes 让它自动。

是不是该直接删掉口令?
最好别——口令把磁盘上的私钥加密。用 ssh-agent 换便利、保住保护。

怎么让口令重启后仍然记住?
macOS 用 ssh-add --apple-use-keychainUseKeychain yes;Windows 把 ssh-agent 服务设为自动启动。密钥就会自己加载。

怎么改密钥的口令?
ssh-keygen -p -f ~/.ssh/id_ed25519;它改口令而不改密钥本身。

快速事实

  • 别删口令——它把磁盘上的密钥加密;改用 agent
  • 缓存:ssh-add ~/.ssh/id_ed25519(每会话输一次口令)
  • 自动:~/.ssh/configAddKeysToAgent yes;macOS Keychain / Windows agent 持久化
  • 更改:ssh-keygen -p -f ~/.ssh/key
  • 移动端:设备 Keychain + 生物识别就是 agent
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog