在 macOS 上通过 SSH 连接服务器

使用 Mac 自带工具,按经核实的步骤安全登录远程服务器。

macOSSSH 远程连接systemsetup 系统设置ssh-add 密钥添加共享密钥ssh-keygen 密钥生成中风险
打开终端,运行 ssh 加上你的用户名和服务器地址。

快速开始

通过 SSH 连接服务器,用的是 macOS 自带的客户端,无需额外安装。本指南先带你完成几项值得提前做的检查——确认服务器已开启 SSH、核对主机密钥指纹、可选地把密钥口令存入钥匙串——最后执行真正的登录。

确认服务器已开启 SSH 服务

如果目标机器也是一台 Mac,必须先在服务器端开启“远程登录”,否则任何 ssh 连接都会失败。可由服务器上的管理员用 systemsetup 打开。开启后可在系统设置的“共享”面板中确认,或直接进行下一步连接测试。

systemsetup -setremotelogin 可以开启 macOS 的 SSH 服务,让你从另一台电脑登录这台 Mac。

命令
$ sudo systemsetup -setremotelogin on
▾ 撤销
撤销
$ sudo systemsetup -setremotelogin off

连接前先核对服务器指纹

首次连接时 ssh 会要求你信任服务器的主机密钥。提前用 ssh-keygen 计算指纹,可以确认你连的是真正的目标机器,而不是冒名顶替者。当 ssh-keygen 显示的指纹与服务器管理员提供的指纹一致时,即表示核对成功。

计算任意 SSH 公钥或远程主机密钥的 SHA256 指纹,用于核对验证。

命令
$ ssh-keygen -lf ~/.ssh/id_ed25519.pub
# Fingerprint of a remote host key:
ssh-keyscan example.com | ssh-keygen -lf -

把 SSH 密钥口令存入钥匙串(可选)

如果你使用密钥而非密码登录,把口令存入 macOS 钥匙串后,ssh-agent 会自动加载密钥,无需每次手动输入。之后执行 ssh 连接时不再询问口令,即说明设置成功。

macOS把 SSH 密码短语存入 macOS 钥匙串低风险步骤 3可选

苹果版 ssh-add 专属参数 --apple-use-keychain 可以记住密码短语,让 ssh-agent 自动加载密钥,重启后依然有效。

命令
$ ssh-add --apple-use-keychain ~/.ssh/id_ed25519
▾ 撤销
撤销
$ ssh-add -D && ssh-add --apple-use-keychain ~/.ssh/id_ed25519 (re-add without passphrase by regenerating the key)

使用 ssh 连接服务器

这是核心步骤:macOS 自带 ssh 客户端,无需安装。把命令中的用户名和地址换成你自己的服务器信息。当屏幕上出现远程主机的欢迎信息、命令提示符切换为远程 shell 时,说明连接成功。

用系统自带的 ssh 客户端安全连接另一台 Mac、Linux 服务器或家用主机。

命令
$ ssh admin@192.168.1.20
!SSH 意味着对远程机器的完全控制权。连接前务必核对主机名和用户名,且只信任通过可靠渠道获取的主机密钥指纹。

如何确认已解决

当终端提示符变成远程机器的 shell 并显示欢迎信息时即已连接;可在远程执行 hostname 等命令,确认自己确实在服务器上。

一键全部撤销

上面每一条命令都可以撤销。按此顺序执行即可全部还原。

一键全部撤销
$ ssh-add -D && ssh-add --apple-use-keychain ~/.ssh/id_ed25519 (re-add without passphrase by regenerating the key)
sudo systemsetup -setremotelogin off

执行前请先确认——部分步骤之间可能并非相互独立。

来源

  • systemsetup — set system settings (macOS man page)
    SS64 · technical · 2026-09-17
    依据: Documents -setremotelogin on|off, which enables or disables sshd-based Remote Login.
  • launchctl — interact with launchd (macOS man page)
    SS64 · technical · 2026-09-17
    依据: Background on launchd services such as sshd that Remote Login toggles.
  • SSH-KEYGEN(1) — OpenBSD manual
    OpenBSD · technical · 2026-09-17
    依据: Documents -l (fingerprint), -f (file) and reading from stdin with -.
  • ssh-add(1) — macOS man page
    Xcode Man Pages (mirror) · technical · 2026-09-17
    依据: Documents --apple-use-keychain: the passphrase is added to the keychain and later loaded automatically by ssh-agent.
  • ssh-add(1) — macOS man page
    manpagez · technical · 2026-09-17
    依据: Apple's ssh-add variant supports --apple-use-keychain (formerly -K) to persist passphrases in the macOS keychain.
  • ssh(1) man page
    Xcode Man Pages (keith.github.io) · technical · 2026-09-17
    依据: Man page for ssh: 'ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] … [-p port] destination [command]' with destination in user@hostname form.
  • ssh(1) - OpenSSH remote login client
    ManPagez · technical · 2026-09-17
    依据: Mirrors the ssh man page: ssh (SSH client) is a program for logging into a remote machine and executing commands, connecting as user@hostname.

最后验证: 2026-09-21