SSH 登陆失败 Permission denied (publickey) 排错
SSH 登陆失败 Permission denied (publickey) 排错
1. 问题描述
在阿里云上有一台Ubuntu 18.04 版本的服务器,今天使用 ssh 登陆时报错 “Permission denied (publickey)”;
登陆的客户端机器是新安装的 Ubuntu 22.04 机器;
为了安全,登陆方式一直使用的本地私钥登陆;
后续说明中,使用的假设条件
- 客户端机器上的用户是 foo
- 服务器端的帐户是 bar
- 服务器为 example.com
- 本地私钥文件路径为 ~/.ssh/id_rsa
$ ssh -i .ssh/id_rsa bar@example.com foo@example.com: Permission denied (publickey).
2. 问题分析
从提示看,应该是权限问题,这个服务器长时间没动过,还以为被黑了,密钥被替换了?
通过阿里云的网页版控制台登陆,使用了之前的私钥,可以顺利登陆,看来不是密钥内容的问题。
因为ssh对密钥文件和存储密钥的目录有很强权限要求,所以首先设置客户端机器中相关文件系统的权限。示例中假设使用的私钥文件名字是 id_rsa
$ chmod 700 /home/foo $ chmod 700 /home/foo/.ssh $ chmod 600 /home/foo/.ssh/id_rsa
下表罗列了 ssh 所涉及的相关文件和目录的权限要求。如果有相关的文件,按要求设置。
文件/文件夹 权限要求 ~/.ssh 目录 700 (drwx------) public keys 644 (-rw-r–r–) private keys 600 (-rw-------) authorized_keys 600 (-rw-------) known_hosts 600 (-rw-------) config 600 (-rw-------) 权限检查和设置完成后,再次登陆,仍然报相同错误! 看来不是文件系统权限错误导致的。
通过添加 -vvv 参数启用 ssh 登陆的详细调试信息,分析错误日志
$ ssh -vvv -i .ssh/id_rsa bar@example.com OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * ...... 省略.... ...... debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Offering public key: .ssh/id_rsa RSA SHA256:CU98bg6gzau/W/nrC+SfwnSpQdozsObTdbOh/ac4M9I explicit agent debug1: send_pubkey_test: no mutual signature algorithm debug1: Offering public key: /home/foo/.ssh/id_rsa RSA SHA256:1V9z05gv0vCLh5QtTrU9eE5Cjlgo9MKqIyva+MQZDTo agent debug1: send_pubkey_test: no mutual signature algorithm debug2: we did not send a packet, disable method debug1: No more authentication methods to try. bar@example.com: Permission denied (publickey)
从详细日志分析,可见问题出在报错 “send_pubkey_test: no mutual signature algorithm” 的地方。
3. 解决方法
在搜索引擎里搜索错误信息,发现错误的原因是由于最新的 Ubuntu 22.04 操作系统中的 ssh 服务默认不支持 RSA 前面算法,而服务器端的 Ubuntu 18.04 使用的还是老版本 ssh。两者没用共同匹配的签名算法,所以登陆失败了。不过这个权限拒绝的报错 “Permission denied” 信息不太准确,容易误导用户。
下图是文章从 SSH-RSA key rejected with message “no mutual signature algorithm” 文章中的截图
根据文章提示,需要在客户端高版本的 ssh 的配置文件中增加 PubkeyAcceptedKeyTypes +ssh-rsa 选项增加对 rsa 算法的支持。
PS: 注意要修改的文件是客户端的 ssh_config 配置文件,不是大家经常修改的 sshd 服务器端的配置文件。
$ echo "PubkeyAcceptedKeyTypes +ssh-rsa" | sudo tee -a /etc/ssh/ssh_config$ ssh -i .ssh/id_rsa bar@example.com
最终解决了问题,登陆成功。
SSH 登陆失败 Permission denied (publickey) 排错相关推荐
- SSH登陆出现Permission denied (publickey)错误解决方案
现象,SSH登陆出现Permission denied (publickey) [oracle@k8scloud ~]$ ssh oracle@xxx.xxx.xxx.xxx The authenti ...
- win10 配置github ssh密钥失败 Permission denied (publickey)
https://www.cnblogs.com/jiayouba/p/15430389.html 在.ssh文件夹下,增加config文件,内容如下: Host github.com HostName ...
- SSH Error: Permission denied (publickey)
文章目录 问题描述 解决方案 SSH-ADD 报错:Error connecting to agent: No such file or directory 参考资料 问题描述 C: \Users \ ...
- ssh localhost失败:Permission denied (publickey).
当ssh localhost出现报错"Permission denied (publickey).",检查日志 grep sshd /var/log/audit/audit.log ...
- 由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法
由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法 参考文章: (1)由于SSH配置文件的不匹配,导致的Permission denied (pu ...
- 【linux】Permission denied (publickey) SSH用户名密码登录报错
1.概述 所在机器直接ssh登录,报错了 Permission denied (publickey). 原因 生产机器默认禁用了ssh密码登录权限.之前测试环境也遇到了,解决过一次,忘了-- 解决方案 ...
- 远程服务器 上传公钥,SSH远程连接报错Permission denied (publickey)
ssh初次与远程主机建立连接,一般有几个步骤: 1.本地生成密钥对:ssh-keygen -t rsa #-t表示类型选项,这里采用rsa加密算法 然后根据提示一步步的按enter键即可(其中有 ...
- ssh localhost报错解决:ubuntu@localhost: Permission denied (publickey).
报错: ubuntu@localhost: Permission denied (publickey).解决: # /usr/sbin/sshd # cat ~/.ssh/id_rsa.pub > ...
- RSA key fingerprint is....Permission denied (publickey).需要SSH Key
换了新电脑,要克隆上传代码,直接告诉我被拒绝 . Cloning into 'app'... The authenticity of host '[bitbucket.bj.ssdn.accounts ...
最新文章
- Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片...
- [译]yield关键字都做了什么?
- js解码编码decodeURI与decodeURIComponent区别
- 设计模式学习笔记1——类与类之间的关系
- 利用iMazing备份功能替换游戏存档
- 直插式电阻电容封装与尺寸图…
- Android之高仿墨迹天气桌面组件(AppWidgetProvider)
- java怎么用switch求闰年_使用switch语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天...
- windows server关闭系统自动更新
- Java导出多个excel并且打包成zip压缩文件
- 练手实验 冲!冲!冲!
- linux运维每天都要做什么,Linux运维工作清闲吗?每天需要干什么?
- 预训练权重到底是个啥
- 惠普找不到远程服务器,惠普笔记本搜不到wifi怎么办
- 网站被攻击了,接入CDN防护,源IP是否需要修改
- 不可忽视!中国“新四大发明”正改变世界
- 文件------概念、基本操作、打开文件的方式、按行读取文件内容、复制文件、文件/目录的常用管理操作、文本文件的编码格式、练习1-4
- 使用MobileNet_SSD进行目标检测
- 硬盘视频文件损坏如何快速恢复
- 一张大尺度美女图,竟然推进了AI算法的进步。。。