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也会依次尝试这些默认的密钥文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1452190.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion入门指南(看完必会)超全面

作者:SuMu 链接:https://zhuanlan.zhihu.com/p/703196651 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 今天写这个帖子是带大家了解一款强大的 AI 绘画工具——Stable Diffusion&#xff…

重新安装TortoiseGit后提示权限错误问题解决

今天在Windows11系统中下载安装使用TortoiseGit可视化Git工具,进行代码提交管理。 由于电脑之前是一位开发人员在使用,所以曾经安装使用过这个工具。 重新安装好软件后,在coding网站中复制代码路径后,在本地目录通过鼠标右键选择…

把Vue项目从Window系统迁移到Mac系统的方案

不能启动vue ui 直接运行,会报错如下: failed to load config from /Users/xiaochen/IdeaProjects/ChatViewer-frontend/vite.config.tserror when starting dev server: Error: You installed esbuild for another platform than the one youre curre…

大模型企业落地:制造业可以选择的应用场景

前言 在当今制造业快速发展的背景下,设备稳定运行对于企业的发展至关重要。然而,传统的设备维修模式已无法满足现代企业的需求。为此,引入智能化、数字化的设备维修解决方案成为必然趋势。本文将探讨如何利用大模型技术,构建企业…

【FireSim/Chipyard】解决FireSim Repo Setup步骤中Conda的firesim环境下载失败的问题

【FireSim/Chipyard】解决FireSim Repo Setup步骤中Conda的firesim环境下载失败的问题 问题描述 按照U250官方文档下载Conda环境的时候,即语句./scripts/machine-launch-script.sh --prefix REPLACE_ME_USER_CONDA_LOCATION的时候会遇到以下报错: Sol…

vue3-sfc-loader动态加载一个异步vue组件生成cesium画面

在 Vue.js 3 中,使用 vue3-sfc-loader 可以动态加载异步的 Vue 单文件组件(.vue 文件)。这个工具允许你在运行时根据需要加载和解析 .vue 文件,使得组件的加载变得更加灵活和动态。 下面是一个简单的示例,演示如何使用…

C++面向对象程序设计 - 函数库

C语言程序中各种功能基本上都是由函数来实现的,在C语言的发展过程中建立了功能丰富的函数库,C从C语言继承了些函数功能。如果要用函数库中的函数,就必须在程序文件中包含文件中有关的头文件,在不同的头文件中,包含了不…

图解Attention学习笔记

教程是来自https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/ 图解Attention Attention出现的原因是:基于循环神经网络(RNN)一类的seq2seq模型,在处理长文本时遇到了挑战,而对长文本中…

02-MybatisPlus批量插入性能够吗?

1 前言 “不要用 mybatis-plus 的批量插入,它其实也是遍历插入,性能很差的”。真的吗?他们的立场如下: 遍历插入,反复创建。这是一个重量级操作,所以性能差。这里不用看源码也知道,因为这个和…

电脑超频是否能把平平无奇的CPU性能提升到超高性能的CPU水平?

前言 这一期着实很有意思哈,一颗平平无奇的CPU通过超频,把性能提升到超高性能的CPU水平。 举个例子:类似于把i7-4790k这颗十年前的高性能CPU超频到性能与i9-14900同样水准,是否可行? 先科普一下:i7-4790…

东理咨询交流论坛系统

开头语:你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP技术、B/S架构 工具:MyEclipse 系统展示 首页 管理员功能…

智能合约之路:Web3时代的商业革新之道

随着区块链技术的日益成熟和普及,智能合约作为其重要应用之一,正逐渐引领着我们进入一个全新的商业时代,即Web3时代。在这个时代,智能合约不仅改变着商业交易的方式,更为商业模式带来了颠覆性的革新。本文将深入探讨智…

【redis】Redis的经典使用场景

目录 1.最常见——缓存2.数据共享分布式3.分布式锁4.全局ID5.计数器6.限流7.位统计8.购物车9.用户消息时间线timeline10.消息队列11.抽奖点赞、签到、打卡13.商品标签14.商品筛选15.用户关注、推荐模型16排行榜 1.最常见——缓存 数据类型:string例如:热…

buildroot编译出错you should not run configure as root

虚拟机版本:ubuntu-22.04.4 问题 buildroot在图形配置后,执行 sudo make开始编译出现以下错误configure: error: you should not run configure as root (set FOenvironment to bypass this check) 在网上看到说在/etc/profile文件中添加以下内容 exp…

Hbase搭建教程

Hbase搭建教程 期待您的关注 ☀小白的Hbase学习笔记 目录 Hbase搭建教程 1.上传hbase的jar包并解压 2.重新登录 3.启动zookeeper 4.配置环境变量 5.关闭ZK的默认配置 6.修改hbase-site.xml文件 7.修改regionservers文件 8.将配置好的文件分发给其它节点 9.配置环境变量…

JavaScript-函数

学习目标: 掌握函数 学习内容: 为什么需要函数函数使用函数传参函数返回值函数细节补充函数作用域匿名函数案例 为什么需要函数: 函数:function 是被设计为执行特定任务的代码块。说明:函数可以把具有相同或相似逻辑…

旅游网站(携程旅行网页学习 vue3+element)

旅游网站 1. 创建项目 在你要创建项目的路径下打开vscode,新建终端,然后输入vue ui,进入Vue项目管理器。选择“创建”,确定项目路径,并点击“在此创建新项目”。在项目文件夹中输入项目名称,点击下一步;选…

【V8引擎】 V8引擎如何运行JS的

文章目录 概要什么是V8引擎为什么需要V8引擎比较常见的javascript引起有哪些呢?V8引擎是如何工作的(V8引擎的解析过程)V8引擎的做了哪些优化 概要 本篇文章主要是讲V8引擎如何运行JS,对运行JS做了哪些优化 什么是V8引擎 V8 是一…

深入理解计算机系统 家庭作业6.34

第一步先求(S,E,B,m) 题目说共C32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节 CB*E*S .B16 ,直接映射的E就是1,所以S2 m为啥等于7? 通过写出两个数组所有的地址可以得出m7. 得出高速缓存的参数:(S,E,B,m)(2,1,16,7),注意图6-26每个参数的定义…

Python 植物大战僵尸游戏【含Python源码 MX_012期】

简介: "植物大战僵尸"(Plants vs. Zombies)是一款由PopCap Games开发的流行塔防游戏,最初于2009年发布。游戏的概念是在僵尸入侵的情境下,玩家通过种植不同种类的植物来保护他们的房屋免受僵尸的侵袭。在游…