Mac免密连接ssh
Mac免密连接ssh
存储多个ssh信息
# ~/.ssh/config
Host dev
HostName 192.168.1.100
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
在 macOS(客户端)上配置 SSH 密钥连接 Ubuntu(服务端),标准流程分为 生成密钥、上传公钥、服务端授权 三步。以下是针对你(Mac + Ghostty 环境)的详细实操指南:
第 1 步:在 Mac 上检查并生成密钥对
打开你的 Ghostty 终端,先检查是否已有密钥(避免覆盖旧密钥):
bash
ls ~/.ssh/id_*.pub
- 如果提示
No such file or directory,说明没有密钥,执行生成命令。 - 如果存在
id_ed25519.pub,可以直接跳到第 2 步。
生成新密钥(推荐 Ed25519 算法,比 RSA 更快更安全):
bash
ssh-keygen -t ed25519 -C "your_email@example.com"
- 提示
Enter file in which to save the key:直接按回车(使用默认路径~/.ssh/id_ed25519)。 - 提示
Enter passphrase(密钥密码):强烈建议设置(比如 4 位数的简单密码)。这是为了万一私钥泄露,对方也无法直接使用。如果不想每次登录都输两遍密码,后续可以配合 macOS 钥匙串自动解锁。
第 2 步:将公钥上传至 Ubuntu 服务器(二选一)
方法 A(最推荐):使用 ssh-copy-id 工具
这是最安全、最省事的方法,直接在 Mac 终端执行:
bash
ssh-copy-id username@你的Ubuntu_IP地址
- 例如:
ssh-copy-id root@192.168.1.100 - 系统会提示输入 Ubuntu 服务器上该用户的登录密码,输入后公钥会自动写入服务器的
~/.ssh/authorized_keys文件。
方法 B(纯手动,适合 ssh-copy-id 不可用的情况):
通过管道命令手动追加:
cat ~/.ssh/id_ed25519.pub | ssh username@你的Ubuntu_IP地址 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
- 同样会要求输入一次 Ubuntu 的登录密码。
第 3 步:修复 Ubuntu 服务端的目录权限(至关重要!)
SSH 对权限非常敏感,权限不对会导致密钥被忽略。上传完成后,建议立即登录 Ubuntu 服务器(使用刚才的密码)执行以下命令锁定权限:
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
700表示只有该用户能读写执行该目录。600表示只有该用户能读写授权文件。
第 4 步:测试免密登录
回到 Mac 的 Ghostty 终端,直接尝试连接:
bash
ssh username@你的Ubuntu_IP地址
- 情况一:直接连上,恭喜成功!🎉
- 情况二:提示输入密钥密码(Passphrase for key),这是你在第 1 步设置的密码,输入即可。
- 情况三:依然提示输入 Ubuntu 的系统登录密码,说明密钥没生效,请看下面的排障。
第 5 步(可选):让 Mac 记住密钥密码(避免每次输两次)
如果你在第 1 步设置了密钥密码,不想每次 SSH 都敲一遍,可以将密钥添加进 macOS 的钥匙串:
bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
配置后,重启电脑也只需在第一次 SSH 时输一次密码,后续自动填充。
⚠️ 常见排障(如果依然要求输密码)
-
检查 Ubuntu 的 SSH 服务配置:登录 Ubuntu,打开
/etc/ssh/sshd_config,确保以下三项没有被注释(且值为 yes):text
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes (如果禁用了密码登录,调试期间先打开)修改后执行
sudo systemctl restart sshd重启服务。 -
检查服务器上的文件所有权:确保
~/.ssh目录所属用户与你登录的用户一致,执行:bash
chown -R 你的用户名:你的用户名 ~/.ssh -
确认 IP 和用户名:检查是否不小心写错了 Ubuntu 的 IP 或用户名。

浙公网安备 33010602011771号