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) 排错相关推荐

  1. SSH登陆出现Permission denied (publickey)错误解决方案

    现象,SSH登陆出现Permission denied (publickey) [oracle@k8scloud ~]$ ssh oracle@xxx.xxx.xxx.xxx The authenti ...

  2. win10 配置github ssh密钥失败 Permission denied (publickey)

    https://www.cnblogs.com/jiayouba/p/15430389.html 在.ssh文件夹下,增加config文件,内容如下: Host github.com HostName ...

  3. SSH Error: Permission denied (publickey)

    文章目录 问题描述 解决方案 SSH-ADD 报错:Error connecting to agent: No such file or directory 参考资料 问题描述 C: \Users \ ...

  4. ssh localhost失败:Permission denied (publickey).

    当ssh localhost出现报错"Permission denied (publickey).",检查日志 grep sshd /var/log/audit/audit.log ...

  5. 由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法

    由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法 参考文章: (1)由于SSH配置文件的不匹配,导致的Permission denied (pu ...

  6. 【linux】Permission denied (publickey) SSH用户名密码登录报错

    1.概述 所在机器直接ssh登录,报错了 Permission denied (publickey). 原因 生产机器默认禁用了ssh密码登录权限.之前测试环境也遇到了,解决过一次,忘了-- 解决方案 ...

  7. 远程服务器 上传公钥,SSH远程连接报错Permission denied (publickey)

    ssh初次与远程主机建立连接,一般有几个步骤: 1.本地生成密钥对:ssh-keygen -t rsa    #-t表示类型选项,这里采用rsa加密算法 然后根据提示一步步的按enter键即可(其中有 ...

  8. ssh localhost报错解决:ubuntu@localhost: Permission denied (publickey).

    报错: ubuntu@localhost: Permission denied (publickey).解决: # /usr/sbin/sshd # cat ~/.ssh/id_rsa.pub > ...

  9. RSA key fingerprint is....Permission denied (publickey).需要SSH Key

    换了新电脑,要克隆上传代码,直接告诉我被拒绝 . Cloning into 'app'... The authenticity of host '[bitbucket.bj.ssdn.accounts ...

最新文章

  1. Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片...
  2. [译]yield关键字都做了什么?
  3. js解码编码decodeURI与decodeURIComponent区别
  4. 设计模式学习笔记1——类与类之间的关系
  5. 利用iMazing备份功能替换游戏存档
  6. 直插式电阻电容封装与尺寸图…
  7. Android之高仿墨迹天气桌面组件(AppWidgetProvider)
  8. java怎么用switch求闰年_使用switch语句编程,根据输入的年份判断是否为闰年,根据输入的月份判断这月有多少天...
  9. windows server关闭系统自动更新
  10. Java导出多个excel并且打包成zip压缩文件
  11. 练手实验 冲!冲!冲!
  12. linux运维每天都要做什么,Linux运维工作清闲吗?每天需要干什么?
  13. 预训练权重到底是个啥
  14. 惠普找不到远程服务器,惠普笔记本搜不到wifi怎么办
  15. 网站被攻击了,接入CDN防护,源IP是否需要修改
  16. 不可忽视!中国“新四大发明”正改变世界
  17. 文件------概念、基本操作、打开文件的方式、按行读取文件内容、复制文件、文件/目录的常用管理操作、文本文件的编码格式、练习1-4
  18. 使用MobileNet_SSD进行目标检测
  19. 硬盘视频文件损坏如何快速恢复
  20. 一张大尺度美女图,竟然推进了AI算法的进步。。。

热门文章

  1. Linux设备驱动:USB设备驱动
  2. 虚拟机设置固定IP,以及解决设置固定IP后不能上网的问题
  3. python如何进入venv环境_python 环境之 venv
  4. 绘图软件有哪些免费使用操作
  5. ps钢笔工具的使用1
  6. word取消自动打开文档结构图
  7. wps里面函数怎么使用_WPS Excel经典函数:Vlookup怎么用
  8. 震惊,某男子在吹空调之后竟然出现了这样的状态
  9. PS零基础怎么制作2.5D立体插图
  10. 市场预测美联储加息的有效性几何