Bug:SSH Failed Permission Denied(完美解决)

2024-06-16 02:04

本文主要是介绍Bug:SSH Failed Permission Denied(完美解决),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Bug:SSH Failed Permission Denied(完美解决)

今天我本机mac通过ssh访问linux服务器时报错:SSH Failed Permission Denied
思路:

  • linux服务器sshd是否开启
  • linux /etc/ssh/sshd_config配置是否正确(是否开启允许公钥认证、Root方式登录等)
  • 本地mac 的~/.ssh/config是否正确(如果配置文件中未指定使用哪个私钥,默认会寻找mac的~/.ssh/id_rsa私钥与linux服务器公钥进行认证)
    我是因为本地不小心在~/.ssh/config指定了错误的私钥文件,导致与我linux的公钥验证时匹配失败。我将他注释之后重新ssh成功免密访问linux服务器。
    在这里插入图片描述
# 详细显示通信过程(类似debug)
ssh -v root@10.xx.xx.xx

解决办法

1. 检查目标服务器sshd服务是否开启

systemctl status sshd

在这里插入图片描述

2. 检查目标linux /etc/ssh/sshd_config是否允许公钥认证等

# 检查配置是否开启
grep -E 'PermitRootLogin | PubkeyAuthentication |PasswordAuthentication' /etc/ssh/sshd_config | grep -v '#'

在这里插入图片描述

如果未开启则需按照下面方式开启对应配置:

vim /etc/ssh/sshd_config# 允许root登录、允许使用公钥认证、允许使用密码登录
PermitRootLogin yes 
PubkeyAuthentication yes
# 可选
PasswordAuthentication yes # 重启sshd服务
systemctl restart sshd

3. 检查本地是否有~/.ssh/config,如果有配置是否正确

有时我们如果有多个服务,并且会使用到多个私钥的话,就会使用~/.ssh/config

  • ~/.ssh/config主要用于配置访问不同主机使用哪个私钥匹配。详情:一文教会git如何配置多SSH Key(Github+Gitlab)
cat ~/.ssh/config

比如我这次就是配置了错误的私钥与服务端验证。导致通信失败
在这里插入图片描述

4. ssh -v root@10.xx.xx.xx分析具体错误

如果上面都没问题,则可以通过ssh -v查看具体通信过程,以及对应报错。

# 查看通信详细信息
ssh -v root@10.xx.xx.xx

拓展1:linux配置免密

1 本机mac生成私钥

# 一路回车
ssh-keygen -t rsa

2 拷贝公钥到linux服务器

# 拷贝指定公钥到目标服务器(将公钥拷贝到authorized_keys文件中。如果匹配成功,就允许无密码登录。)
# 如果不-i指定公钥文件默认会拷贝~/.ssh/id_rsa.pub公钥到服务器
ssh-copy-id root@10.xx.xx
#ssh-copy-id -i ~/.ssh/id_rsa.pub  root@10.xx.xx.xx

拓展2:~/.ssh/authorized_keys与~/.ssh/known_hosts

~/.ssh/authorized_keys:存放公钥,用于ssh免密登录(存在linux服务端)
~/.ssh/known_hosts:判断我们ssh连接的服务器是否是真实的,避免中间人攻击(存在mac客户端)

~/.ssh/authorized_keys 和 ~/.ssh/known_hosts 是SSH协议中两个重要的文件,它们分别服务于不同的安全目的,但共同协作保障SSH连接的安全性和便利性。

  • ~/.ssh/authorized_keys:
    作用:此文件存储在远程服务器上(您尝试连接的机器),位于用户的家目录下的.ssh目录中。它包含了允许访问该账户的所有公钥列表。当您从本地机器尝试SSH登录到远程服务器时,远程SSH服务会检查您提供的私钥是否有对应的公钥存在于authorized_keys文件中。如果匹配成功,就允许无密码登录
    安全意义:通过这种方式,SSH实现了基于密钥的身份验证,提高了安全性,避免了密码传输带来的风险。
  • ~/.ssh/known_hosts
    作用:此文件位于本地机器的用户家目录下的.ssh目录中。它记录了所有曾经连接过的远程主机的公钥指纹。当您首次尝试连接到一个新的SSH服务器时,SSH客户端会提示您验证服务器的指纹,并将其添加到known_hosts文件中。之后每次连接同一服务器时,SSH客户端都会对比远程服务器发来的公钥指纹与known_hosts中的记录,确保没有受到中间人攻击(MITM)。
    安全意义:通过维护已知主机的公钥指纹记录,known_hosts帮助检测潜在的安全威胁,确保您连接的是预期的服务器,防止被假冒的服务器欺骗

联系与区别

  • 联系:两者都是SSH协议用来加强连接安全性的机制。authorized_keys确保了客户端的合法身份,而known_hosts确保了服务器身份的合法性,两者共同构建了SSH连接的信任基础。
  • 区别:authorized_keys关注于授权,即允许哪些客户端(通过其公钥)可以访问服务器;而known_hosts关注于验证,即本地客户端如何确认远程服务器的身份是可信的。一个是权限控制,一个是安全验证。

拓展3:ssh root@10.xx.xx.xx采用私钥顺序

  • ~/.ssh/id_rsa: 这是最常用的私钥文件,默认情况下,SSH客户端会查找用户主目录下的.ssh/id_rsa作为私钥。
  • ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519: 如果配置了其他类型的密钥(如ECDSA或ED25519),SSH也会依次尝试这些默认的密钥文件。

这篇关于Bug:SSH Failed Permission Denied(完美解决)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065204

相关文章

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Idea插件MybatisX失效的问题解决

《Idea插件MybatisX失效的问题解决》:本文主要介绍Idea插件MybatisX失效的问题解决,详细的介绍了4种问题的解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、重启idea或者卸载重装MyBATis插件(无需多言)二、检查.XML文件与.Java(该文件后缀Idea可能会隐藏

Nginx 访问 /root/下 403 Forbidden问题解决

《Nginx访问/root/下403Forbidden问题解决》在使用Nginx作为Web服务器时,可能会遇到403Forbidden错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录解决 Nginx 访问 /root/test/1.html 403 Forbidden 问题问题复现Ng

Python的pip在命令行无法使用问题的解决方法

《Python的pip在命令行无法使用问题的解决方法》PIP是通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载、更新等功能,安装诸如Pygame、Pymysql等Pyt... 目录前言一. pip是什么?二. 为什么无法使用?1. 当我们在命令行输入指令并回车时,一般主要是出现以

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python与Java交互出现乱码的问题解决

《Python与Java交互出现乱码的问题解决》在现代软件开发中,跨语言系统的集成已经成为日常工作的一部分,特别是当Python和Java之间进行交互时,编码问题往往会成为导致数据传输错误、乱码以及难... 目录背景:为什么会出现乱码问题产生的场景解决方案:确保统一的UTF-8编码完整代码示例总结在现代软件

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最