1、在本地生成密钥对(本地电脑)

打开你本地电脑的终端(Terminal / PowerShell / CMD),运行:

ssh-keygen -t ed25519 -C "用户名(用户-密钥对应的)"

运行后,系统会连续问你三个问题,一般情况下全部直接按回车(Enter)即可:

  1. Enter file in which to save the key... (提示你保存路径):直接按回车,保存在默认路径 ~/.ssh/id_ed25519

  2. Enter passphrase (empty for no passphrase): (提示你设置私钥密码):直接按回车留空。如果你设置了密码,以后每次用密钥登录还是要输这个密码,就失去了“免密”的意义。

  3. Enter same passphrase again: (确认密码):再次按回车。

完成后,你的本地电脑里就有了 id_ed25519(私钥,自己藏好)和 id_ed25519.pub(公钥,准备发给服务器)。

2、获取你的公钥内容(本地电脑)

在本地电脑的终端运行以下命令,查看公钥内容:

cat ~/.ssh/id_ed25519.pub

终端会输出一长串字符(以 ssh-ed25519 开头,以你的邮箱结尾)。用鼠标选中并复制这一整段内容。

3、将公钥写入远程服务器(远程服务器)

这一步的目的是把刚刚复制的“锁(公钥)”装到服务器上。

  • 正常登录服务器:用密码通过 SSH 登录到你的远程服务器。

  • 确保 .ssh 目录存在:在服务器终端运行:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
  • 打开 authorized_keys 文件: 如果你是用 VS Code 连接的服务器,此时运行你之前提到的命令:

    code ~/.ssh/authorized_keys
    
  • 粘贴并保存:把第二步中复制的那一长串公钥内容,粘贴到这个文件中。如果文件里已经有别的公钥了,就另起一行粘贴。保存并关闭文件。

  • 设置严格的权限(非常重要):SSH 对权限要求极高,权限不对会拒绝登录。在服务器终端运行:

    chmod 600 ~/.ssh/authorized_keys

4、测试免密登录(本地电脑)

回到你的本地电脑终端,尝试像往常一样通过 SSH 连接服务器。如果一切配置正确,这次系统不会再提示你输入密码,而是会直接显示服务器的欢迎信息并成功登录!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐