Linux系列讲解 —— SSH登录

news2024/12/24 20:42:39

讲解一下ssh远程登陆的基础知识。

目录

  • 0. 基本原理
  • 1. 安装ssh程序:
    • 1.1 windows平台(Win10)
    • 1.2 Linux平台(Ubuntu18.04)
  • 2. 密码方式远程登录
  • 3. 密钥方式远程登录
    • 3.1 生成私钥公钥对
    • 3.2 将公钥复制到远程机器
    • 3.3 尝试ssh远程登录
  • 4. 常见问题
    • 4.1 sun@192.168.1.21: Permission denied (publickey).
    • 4.2 Received disconnect from 192.168.1.21 port 22:2: Too many authentication failures

0. 基本原理

ssh有两部分,分别为ssh客户端程序ssh服务端程序。连接之前,远程目标机器的ssh服务端程序要保持打开,然后本地主机使用ssh客户端程序发起连接请求,输入密码即可登陆成功。

1. 安装ssh程序:

下面分别介绍一下linux和windows平台安装ssh的方法。

1.1 windows平台(Win10)

1.安装ssh的客户端和服务端
正常情况系统默认安装了ssh客户端,依具体情况而定。
在这里插入图片描述

2. ssh服务的启动和关闭
调用cmd或powershell终端,然后按情况执行下面命令
开启服务:net start sshd
关闭服务:net stop sshd

1.2 Linux平台(Ubuntu18.04)

1.安装ssh的客户端和服务端
正常情况系统默认安装了ssh客户端,依具体情况而定。

sudo apt install openssh-server
sudo apt install openssh-client

2.开启服务和关闭服务

#启动服务
sudo systemctl start ssh

#关闭服务
sudo systemctl stop ssh

3.查看服务状态

sudo systemctl status sshd

开启状态:
在这里插入图片描述

关闭状态:
在这里插入图片描述

2. 密码方式远程登录

无论是linux还是windows系统,使用ssh客户端远程登录的命令格式都是ssh 用户名@ip地址。已知远程机器里注册好了账户sun,并设置好了密码。登录实例如下:

fan@pc:~$ ssh sun@192.168.1.10
sun@192.168.1.10's password: 
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-146-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
...
Last login: Mon Apr 24 18:50:03 2023 from 172.32.1.76
sun@pc:~$ 

登录成功后,就可以通过该账户(sun)进行命令行操作这台远程机器了。

3. 密钥方式远程登录

其实ssh默认是使用密钥登录的,密钥登录的一个优点就是登录的时候不需要输入密码,其原理大概就是登录的时候验证密钥和公钥是否匹配,每个密钥和公钥之间都是唯一匹配的。下面具体说一下准备工作:

3.1 生成私钥公钥对

在本地机器上执行命令ssh-keygen -t rsa -C “邮箱”,例如:
在这里插入图片描述

上面执行完之后,会在/home/fan/.ssh/路径下生成id_rsa和id_rsa.pub文件。其中id_rsa为记录私钥的文件,id_rsa.pub为记录公钥的文件。

3.2 将公钥复制到远程机器

将上一步生成的id_rsa.pub文件内容拷贝追加到远程机器的/home/用户名/.ssh/authorized_keys中即可。

3.3 尝试ssh远程登录

上面两步做完,执行ssh登录命令,正常情况应该是不需要密码就能连接上了。例:

fan@pc:~$ ssh sun@192.168.1.10

从原理角度讲,每个私钥和公钥都是可以放到多个机器上的,每个私钥(公钥)都有唯一匹配的公钥(私钥)。不过从安全性来讲肯定不建议这么做。

4. 常见问题

4.1 sun@192.168.1.21: Permission denied (publickey).

这个问题是出现在使用git拉取代码的时候,之前一直都是好用的。后来是由于ubuntu升级到22.04,导致ssh也升级到OpenSSH_8.9p1。据官方说这个版本的ssh默认不使用rsa的算法认证,而本地机器与服务器直接一直用的是rsa加密的key,所以才报了这个问题。

解决方法: 在/etc/ssh/ssh_config中加入下面这句话开启rsa算法认证

PubkeyAcceptedAlgorithms +ssh-rsa

4.2 Received disconnect from 192.168.1.21 port 22:2: Too many authentication failures

用ssh连接远程机器时,报了上面的错误。这个是由于我本地创建了很多对密钥,连接的时候验证私钥和公钥次数超过最大验证次数,导致了这个问题。

解决方法1(推荐): 将远程机器最大的验证次数调高,编辑远程机器中的/etc/ssh/sshd_config文件,追加如下内容:

# 这个次数可以依照具体情况进行调整,然后重启一下远程机器的sshd服务才可生效。
MaxAuthTries 10

解决方法2: 连接的时候使用选项Pubkeyauthentication,这样就此次登录就不会用密钥验证登录的方式而变为密码登录方式。

ssh pan@192.168.1.10 -o Pubkeyauthentication=no

解决方法3: 如果想永久的设置不使用密钥验证登录。可以直接编辑/etc/ssh/ssh_config文件,添加PubkeyAuthentication no即可。

注意上面的sshd_config和ssh_config不要弄混淆。sshd_config是服务端程序配置文件,ssh_config是客户端程序配置文件。

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

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

相关文章

Pycharm卡顿、反应慢、CPU占用高

环境: Windows10 22H2 pycharm 2020.1.5专业版 pytorch1.10.1 这是第二次遇到这个问题了,之前尝试过更换pycharm版本,问题是解决了,但是又出现了其他bug。今天研究了半天,使用排除法确定了问题所在。 网上的解决方案…

opencv之图像遍历方法详解

1.IplImage IplImage是OpenCV2、3 中CxCore部分基础的数据结构,用来表示图像。IplImage结构体如下所示: typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (0)*/ int nChannels; /* 大多数OPE…

LeetCode DFS算法求解联通分量数——省份数量

省份数量 题目要求 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连…

编译时不好的注释会让代码丢失并产生问题

写在之前 这篇文章是上一篇文章的后续事件,记录的事情也挺有意思。想看事情如何开始的点击链接 频繁GC引起卡顿问题排查与解决 进入正题 不知道有没有人遇到过编译后部分代码缺失呢?反正我遇到了, 上一篇文章提到了因为开发人员写了死循环…

Docker安装mysql8.0文档

第一步需要安装Docker基础环境,具体可以看看这篇 docker基础篇 第二步,拉取mysql8.0的镜像 docker pull mysql:8.0 第三步,镜像启动和文件挂载 复制下面命令执行,33006是对外访问暴露的端口,当然你也可以设置为3306…

【Hello Network】HTTP协议

作者:小萌新 专栏:网络 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:较为详细的介绍HTTP协议 HTTP协议 HTTP协议HTTP协议概念URL概念urlencode和urldecodeHTTP协议格式HTTP请求协议格式HTTP响应格式 HTTP的方法HTTP状态…

04-26 每日一题 1031. 两个非重叠子数组的最大和 学习反思

1031. 两个非重叠子数组的最大和 类似问题转换 考虑一个问题,如何求得数组中两个数的最大和。 可以固定一个数,然后向右遍历如下,可以求得目标数组中两个数的最大和为 15 把思路实现为代码 实现过程,如上图所示过程&#xff0…

【汽车品牌案例02-设置右侧索引 Objective-C语言】

一、刚才我们说了一下,如何把那个汽车品牌加载起来,我们使用了一个模型的嵌套,以及我们在创建单元格的时候,是不是指定了一个,单元格的可重用ID吧, 1.根据重用ID来创建单元格,那么我们运行的时候,已经能把这个大致的效果做出来了, 大致就是这么一个效果, 接下来,还…

SPI机制源码解析

概念 SPI(service provider interface),是JDK内置的一种服务提供发现机制。是一种动态替换发现机制,比如有个接口,想在运行时动态地给它添件实现,只需要添加一个实现。 然后在META-INF/services目录创建一…

树莓派+摄像头:mjpg-streamer实现监控功能的配置及调试

目录 一 树莓派摄像头安装 二 配置mjpg-streamer ① 说明 ② 配置 <1> 配置前需要安装的工具包 <2> 下载安装mjpg-streamer源码到树莓 <3> 进入下载目录的路径 <4> 输入指令编译&#xff1a;make all <5> 安装指令&#xff1a;…

任务调度原理 通俗详解(FreeRTOS)

寄存器说明 以cortex-M3&#xff0c;首先先要了解比较特别的几个寄存器&#xff1a; r15 PC程序计数器&#xff08;Program Counter&#xff09;,存储下一条要执行的指令的地址。 r14 LR连接寄存器&#xff08;Link Register &#xff09;&#xff0c;保存函数返回地址&#x…

【操作系统】第一章

文章目录 &#x1f337; 一、操作系统的概念1、定义2、功能 和 目标 &#x1f337; 二、操作系统的特征1、**并发**2、 **共享**3、 **虚拟**4、 **不确定性** &#x1f337; 三、操作系统的发展与分类1、 手工操作阶段2、 批处理阶段3、 分时操作系统4、 实时操作系统5、 网络…

servlet技术

功能 对客户端发送的数据进行读取和拦截读取客户端请求的隐含数据运行结果或者生成结果发送响应的数据 Servlet技术特点 高效率 Servlet本身就是一个Java类&#xff0c;在运行的时候位于同一个Java虚拟机中&#xff0c;可以快速地响应客户 端的请求并生成结果。在Wb服务器…

停用词(stop words)+TF-IDF实现

一、什么是停用词&#xff1f; 在汉语中&#xff0c;有一类没有实际意义的词语&#xff0c;比如组词“的”&#xff0c;连词“以及”&#xff0c;副词“甚至”&#xff0c;语气词“吧”&#xff0c;被称为停用词。一个句子去掉这些停用词&#xff0c;并不影响理解。所以&#…

资产管理系统

目录 1、资产管理模块 资产入库 ​编辑 闲置资产分配 资产调配 资产回收 资产报废 车辆维修 2、资产设置模块 资产标准规格 资产分类 3、资产报表模块 全部资产报表 已分配资产报表 资产分类报表 到期资产报表 机构资产报表 资产折旧报表 机构分类报表 资产…

〖ChatGPT实践指南 - 零基础扫盲篇⑤〗- OpenAI API 演示 Demo 之宠物名字生成器

文章目录 ⭐ 运行 Demo应用 - 宠物名字生成器&#x1f31f; 安装 - node.js&#x1f31f; 利用 git 下载 Demo应用 - 宠物名字成器&#x1f31f; 添加 API 秘钥&#x1f31f; 安装依赖并运行Demo应用 - 宠物名字成器 ⭐ 访问并测试 Demo应用 - 宠物名字成器 在上一章节&#xf…

最新版TensorFlow的GPU版本不支持原生Windows系统(大坑预警)

一、前言 首先需要说明&#xff0c;按照官方中文文档安装是无法正常检测到GPU的。因为TensorFlow 2.10是支持原生Windows系统GPU环境的最后版本&#xff0c;默认安装的版本都比较高。 中文文档没有说明&#xff0c;英文文档是有提到的&#xff1a; &#xff08;我在GitHub上找…

PostgreSQL-布尔类型

布尔类型 boolean的值要么是true&#xff0c;要么是false&#xff0c;如果是unknown状态&#xff0c;用NULL表示。 boolean在SQL中可以用不带引号的TRUE或FALSE表示&#xff0c;也可以用其他表示“真”和“假”的带引号字符表示&#xff0c;如true、false、yes、no等等。 cr…

操作系统之进程同步和互斥

目录 什么是进程同步和进程互斥 进程互斥的软件实现方法 进程互斥的硬件实现方法 互斥锁 信号量机制 用信号量实现进程互斥和同步 生产者消费者问题 多生产者多消费者问题 吸烟者问题 读者写者问题 哲学家进餐问题 管程 死锁 什么是进程同步和进程互斥 进程同步 进…

【Golang开发入门】一篇文章弄懂:值类型、指针类型

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: Go语言核心编程近期目标&#xff1a;写好专栏的每一篇文章 目录 一、前言…