前言

事情是这样的,我搞了一个腾讯的云服务器,ssh远程登录的时候采用pubkeyAuthentication。开始的系统是debian11,后来换成了ubuntu。ssh远程登录的时候习惯性的root登录,结果ubuntu的时候,就会报错Permission denied (publickey). 我很迷惑,ssh文件夹给的700权限,key给的400权限,ubuntu配置文件/etc/ssh/sshd_config也改了认证方式,为什么会认证不过。但是如果用密码认证,root登录就可以输入密码正常登录。

最后排查,发现了好玩的事情。

腾讯云的ubuntu登录,默认是用ubuntu登录,而不是root,如果是用root登录就会失败

以下是腾讯云SSH认证的具体流程

SSH密钥认证步骤

  1. 进入到腾讯云的控制台,创建密钥,并绑定到服务器

  2. 创建成功后,会自动下载私钥,这个私钥只有一次下载机会,务必小心保存。下载好后放进ssh文件夹。(在macOS系统上路径为 /Users/username/.ssh)

  3. 将刚刚下载的密钥文件赋予400权限

    chmod 400 /Users/[用户名]/.ssh/[私钥]
    

    ps: .ssh文件夹可以赋予700、755、600权限

  4. 通过控制台进入到服务器bash,修改配置文件

    • ubuntu默认密码是随机的, 开始可以先自己配置一个密码

      sudo passwd
      
    • 进入root,修改配置文件

      su root
      vim /etc/ssh/sshd_config
      

      找到PasswordAuthentication 打开注释(删除#),并把后面改成no

      找到PubkeyAuthentication 打开注释(删除#),并把后面改成yes

      找到PermitRootLogin 打开注释(删除#),并把后面改成yes

      报错并退出

  5. 服务器重启ssh服务

    service sshd restart
    
  6. 物理机远程登录

    ssh -i /Users/[username]/.ssh/[密钥] ubuntu@[服务器公网IP]
    

    注意!就是这里!登录的用户名是ubuntu!

评论