核心原理
SSH 免密登录的核心逻辑是"认卡不认人":将本地电脑的公钥(Public Key),存入线上服务器的信任白名单(authorized_keys)中。以后只要本地的私钥能和服务器上的公钥配对成功,就能直接登录,无需输入密码。
本地的私钥能和服务器上的公钥配对成功,就能直接登录,无需输入密码。
操作步骤解析
第一步:在「本地电脑」获取公钥
$ cd ~/.ssh # 进入本地SSH配置目录
$ ls # 查看目录内容
$ cat id_ed25519.pub # 查看并输出公钥内容
- 在做什么: 去本地的密钥存放地(~/.ssh),找到你的公钥文件(包含 .pub 后缀,代表 Public),把里面以 ssh-ed25519... 开头的内容全部复制下来。
- 补充说明: 这里使用的是 ed25519 算法的密钥,这是目前推荐的类型,比传统的 rsa 更安全且更短、解析更快。
第二步:在「线上服务器」配置白名单
ubuntu@VM-0-14-ubuntu:~$ cd .ssh # 进入服务器的SSH目录
ubuntu@VM-0-14-ubuntu:~/.ssh$ ls # 查看现有文件
ubuntu@VM-0-14-ubuntu:~/.ssh$ vim authorized_keys # 编辑信任名单
- 在做什么: 登录服务器后,打开存放信任名单的 authorized_keys 文件。
- 最终操作: 将第一步复制的本地公钥,另起一行粘贴进去。保存并退出 vim(按 Esc,输入 :wq 回车)。
第三步:享受免密登录
现在,在本地电脑终端直接输入 ssh ubuntu@服务器IP,即可瞬间连上,不再提示输入密码。
涉及的核心文件说明
| 文件名 | 作用 | 存放位置 | 绝对不能泄露吗? |
|---|---|---|---|
| id_ed25519 | 私钥 (Private Key):用来证明"你是你"的唯一凭证。 | 本地电脑 | 🚫 绝对不能 |
| id_ed25519.pub | 公钥 (Public Key):用来给别人验证"你确实是你"的锁。 | 本地电脑 / 要登录的设备 | ✅ 可以公开 |
| authorized_keys | 信任白名单:里面登记了所有被允许免密登录这台服务器的公钥。 | 线上服务器 | 🔒 仅管理员可控 |
💡 拓展小贴士: 如果是新电脑,连第一步的 id_ed25519 文件都没有,只需要在本地执行
ssh-keygen -t ed25519即可一键生成。对于上述的复制粘贴操作,也可以直接用一条命令代替:ssh-copy-id ubuntu@服务器IP。