Linux (一): 使用SSH时遇到的问题

Permission Denied (public key)

在用 SSH 连接服务器时, 经常会使用 public key 的方式, 而不是密码的方式登陆, 一个原因是方便, 第二是相对安全, 但使用这种方式进行登陆时经常会遇到 Permission denied. (public key) 的错误, 我遇到的有两种情况

公钥不匹配

解决方案:
在终端首先输入

ssh-keygen

一路回车, 会后会在你的 ~/.ssh/ 目录下生成一对公钥和私钥, 分别是

  • 公钥: ~/.ssh/id_rsa.pub
  • 私钥: ~/.ssh/id_rsa
    你可以通过
cd ~/.ssh
cat ./id_rsa.pub

命令获得公钥, 然后复制粘贴到服务器的相关配置界面, 重启服务器后直接

ssh [email protected]

无需密码即可连接到服务器

用户名不对

这个很坑
我在使用腾讯云的 Ubuntu 服务器时, 用上述方法仍不能解决问题, 最后发现, 登陆 Ubuntu 的用户名应该是 ubuntu 而不是 root, 所以在按照上述方法在服务器配置好公钥后, 应输入

ssh [email protected]

即可连接服务器

finger print mismatch

当你用 ssh 第一次连接一个新的服务器时, 会要求你记录该服务器的 fingerprint, 也就是它的私钥. 具体而言, 在使用 ssh 正式向服务器建立连接之前, 服务器会给你它的公钥并证明它是这个公钥的所有者, 如果你是第一次和该服务器 ( IP地址 )连接, 你会将 { IP: public key (finger print) } 这一键值对存储下来, 在以后的连接时, 你的电脑会验证该服务器发来的公钥是否和你之前存储的相匹配, 如果不匹配会报错, 不匹配的原因主要有两个:

  1. 服务器重装系统 / 重新部署, 从而生成了新的公钥私钥
  2. 遭遇中间人攻击

你作为服务器的主人应该知道是否确实重装过系统, 如果原因是前者, 那么你只需要将 ~/.ssh/known_hosts 文件中相应的那一行删去即可.
如果你确定你的服务器确实没有被修改, 那么很有可能是遭到攻击, 就要采取相应措施来规避安全问题了.

猜你喜欢

转载自blog.csdn.net/vinceee__/article/details/88373298
今日推荐