前言
事情是这样的,我搞了一个腾讯的云服务器,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密钥认证步骤
- 进入到腾讯云的控制台,创建密钥,并绑定到服务器  
- 创建成功后,会自动下载私钥,这个私钥只有一次下载机会,务必小心保存。下载好后放进ssh文件夹。(在macOS系统上路径为 /Users/username/.ssh) 
- 将刚刚下载的密钥文件赋予400权限 - 1 - chmod 400 /Users/[用户名]/.ssh/[私钥] - ps: .ssh文件夹可以赋予700、755、600权限 
- 通过控制台进入到服务器bash,修改配置文件 - ubuntu默认密码是随机的, 开始可以先自己配置一个密码 - 1 - sudo passwd 
- 进入root,修改配置文件 - 1 
 2- su root 
 vim /etc/ssh/sshd_config- 找到 - PasswordAuthentication打开注释(删除#),并把后面改成no- 找到 - PubkeyAuthentication打开注释(删除#),并把后面改成yes- 找到 - PermitRootLogin打开注释(删除#),并把后面改成yes- 报错并退出 
 
- 服务器重启ssh服务 - 1 - service sshd restart 
- 物理机远程登录 - 1 - ssh -i /Users/[username]/.ssh/[密钥] ubuntu@[服务器公网IP] - 注意!就是这里!登录的用户名是ubuntu! 
 
     
          
         
          
        