前言
事情是这样的,我搞了一个腾讯的云服务器,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
2su 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!