2024-12-17总结: 简单来说就是
1.客户端生成公钥的私钥
2.将客户端的公钥放到服务器身份验证文件中(~/.ssh/authorized_keys )
3.然后客户端指定私钥去连接服务器(linux会自动指定私钥位置,-i 手动指定私钥位置)
这样就能实现只有拥有私钥的客户端才能连接服务器
正文
试了半天,Xshell好像没办法导入linux生成的ssh公钥,因此需要以下步骤实现免密登录
结论,在linux公钥文件中,将客户端生成的ed25519公钥加上去即可(一个公钥单独一行)
1.使用Linux生成秘钥文件(不需要输入私钥密码passphrase)或者直接创建一个相同路径的文件
ssh-keygen -a 256 -t ed25519
2.默认生成在~/.ssh文件夹中(.ssh 不会显示在目录中,直接cd ~/.ssh进入文件夹),里面存在公钥文件id_ed25519.pub
3. 配置ssh公钥登录,三个相关配置
# 是否允许公钥身份验证,默认为yes #PubkeyAuthentication yes # 第二步的认证公钥文件,如果没改名就是id_ed25519.pub #AuthorizedKeysFile .ssh/authorized_keys #是否允许密码身份验证,默认为yes PasswordAuthentication no
4.Xshell生成ed25519公钥(一样不输入加密的密码passphrase)
5.复制生成的秘钥,打开linux刚刚创建的id_ed25519.pub文件,将秘钥复制进去
6.完成,登录的时候选择公钥登录即可,如果刚刚设置了密码这里应该还有输入密码,其他客户端配置一样,在linux公钥新加一行即可