0617-ssh keys

好的,下面是从 零开始,一步步配置 SSH 密钥免密登录远程服务器的完整流程,适用于 macOS(包括 Warp 终端)连接 Linux 服务器的常见场景。


🎯 目标

你要实现的是:

✅ 本地不输密码,直接 ssh user@server 登录远程服务器。


🪜 操作流程(从无到有)

✅ 第一步:生成 SSH 密钥对(在本地 macOS 上)

在 Warp 或终端中运行:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

一路按回车,系统会默认生成文件:

  • 私钥:~/.ssh/id_rsa(请勿泄露)

  • 公钥:~/.ssh/id_rsa.pub(可以给别人)

📌 如果提示覆盖已有密钥,请确认是否继续,或给出其他名字如 id_rsa_serverA


✅ 第二步:把公钥复制到远程服务器

推荐方法(如果支持):

ssh-copy-id username@server_ip

如果没有 ssh-copy-id,用手动方式:

cat ~/.ssh/id_rsa.pub | ssh username@server_ip 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

✅ 这样,服务器就“记住”你的公钥了。


✅ 第三步:测试是否免密成功

在本地执行:

ssh username@server_ip

如果能直接登录,不再要求输入服务器密码,说明配置成功。


✅ 第四步(可选):简化登录命令

编辑文件:

nano ~/.ssh/config

添加内容:

Host myserver
  HostName server_ip
  User username
  IdentityFile ~/.ssh/id_rsa

之后你只需执行:

ssh myserver

✅ 第五步(可选):加载密钥进 SSH Agent(适用于密钥有密码的情况)

如果你在生成密钥时设置了密码短语(passphrase),你可以运行:

eval "$(ssh-agent -s)"
ssh-add -K ~/.ssh/id_rsa   # -K 仅 macOS:保存进钥匙串

若你的密钥没设置密码(多数人选择空),则这步可以跳过。


✅ 完成效果

你现在已经实现:

功能
是否实现

安全生成密钥对

公钥添加到远程服务器

登录时不输入服务器密码

本地命令更简洁(ssh myserver)

(可选)私钥密码记住不再重复输

✅(若设置了密码)


如果你希望:

  • 配多个服务器免密登录

  • 用不同密钥连接 GitHub / GitLab / 跳板机

  • 限制某个密钥只能跑某条命令(高安全场景)

也可以告诉我,我可以帮你继续配置 ~/.ssh/config 或高级控制项。

Last updated