Linux 系统 SSH 和 SCP 服务器搭建、配置、访问以及出现的问题

 SSH是Secure Shell的缩写,是一种网络协议,用于通过本地或远程网络在计算机上进行远程登录和命令操作。SSH 是 Telnet 协议的演变:正如其名称所描述的,SSH 是安全的,并对通过网络传输的数据进行加密。

SSH 是目前较为可靠,转为远程登录会话和其他网络服务提供的安全协议。SSH 常用于远程登录,远程拷贝文件等。使用 SSH 连接远程服务器,服务器端要安装 SSH 服务器并开启服务,客户端安装对应的 SSH 客户端。

本文章将介绍如何在 Ubuntu 20.04 上安装并启用 SSH 服务器

环境:

 Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-76-generic x86_64)

一、前言

为了在 Ubuntu 20.04 上安装 SSH 服务器,您需要在服务器上拥有 sudo 权限。

默认情况下,即使是最低配置,您的主机上也应该已经安装了 SSH 。

要检查情况是否确实如此,您可以运行带有“-V”选项的“ssh”命令。

ssh -V

请注意:ssh的版本信息并不意味着服务器上正在运行 SSH 服务器,它仅意味着您当前能够作为客户端连接到 SSH 服务器。

让我们看看如何在主机上安装 OpenSSH 服务器

二、SSH服务器搭建和配置

1、确保您当前的软件包是最新的

sudo apt-get update

2、 安装 SSH 服务器

sudo apt-get install openssh-server

2.SSH相关命令(Ubuntu)

sudo service ssh start          // 启动 SSH 服务
sudo service ssh stop           // 停止 SSH 服务
sudo service ssh restart        // 重启 SSH 服务

sudo service ssh status         // 查询 SSH 服务状态
sudo systemctl status sshd      //检查ssh服务确实在运行
ps -A | grep "ssh"              // 查询 SSH 服务进程

4、在防火墙设置上启用 SSH 流量

如果您使用UFW作为 Ubuntu 20.04 主机上的默认防火墙,则可能需要在主机上允许 SSH 连接。

要在主机上启用 SSH 连接,请运行以下命令

sudo ufw allow ssh

如果您不确定是否正在使用UFW 防火墙,可以运行“ufw status”命令。

此时主机上不需要设置允许 SSH 连接

此时主机上需要设置允许 SSH 连接

5.在系统启动时启用 SSH 服务器

要检查您的服务是否启用,您可以运行以下命令

sudo systemctl list-unit-files | grep enabled | grep ssh

如果终端上没有结果,您应该“启用”该服务以便在启动时启动它

sudo systemctl enable ssh

6.在 Ubuntu 20.04 上配置 SSH 服务器

在向用户授予任何访问权限之前,正确配置 SSH 服务器非常重要。如果做得不好,您将面临 SSH 攻击的风险,并且您的整个基础设施很容易受到损害。默认情况下,SSH 配置文件位于/etc/ssh 文件夹中。

 在此目录中,您将找到许多不同的文件和文件夹,但最重要的是:

  • ssh_config:用于配置SSH 客户端。这意味着它定义了每次使用 SSH 连接到远程主机或在主机之间传输文件时应用的规则;
  • sshd_config:用于配置SSH 服务器。例如,它用于定义可访问的x或拒绝特定用户与您的服务器进行通信。

更改 SSH 默认端口

sshd_config 配置文件并查找以下行

#Port 22

确保将您的端口更改为未为其他协议保留的端口,更改默认 SSH 端口时要小心,连接时必须指定它。

在 SSH 服务器上禁用 root 登录

默认情况下,在最近的发行版中,root 登录设置为“禁止密码”,也就是说需要设置 SSH 密钥并使用它们才能以 root 身份进行连接。

即使我们在没有密码的情况下连接,也不建议使用 root 登录:如果密钥被泄露,您的整个主机就会被泄露。因此,您可以将此选项设置为“否”以完全限制它。

#PermitRootLogin
PermitRootLogin no

重新启动 SSH 服务器以应用更改

为了应用更改,您需要重新启动 SSH 服务器。

sudo systemctl restart sshd

sudo systemctl status sshd

二、ssh客户端、scp访问SSH服务

1.SSH 客户端访问SSH服务

// 连接远程主机(默认 SSH 端口为 22), 连接上后需要输入用户的密码
ssh 用户名@<主机IP>

// 指定端口连接
ssh 用户名@<主机IP>  -p <port>

2. SCP 客户端访问SSH服务

SCP, Secure Copy。SCP 相当于 本地的 CP 命令, 只不过 SCP 用于夸主机远程操作。
终端使用 SCP 命令访问远程主机, 远程主机必须已成功安装并启动 openssh-server 服务。

格式: 
    scp -r /本地文件路径 目标用户名@目标主机IP:/目标文件绝对路径       // 上传
    scp -r 目标用户名@目标主机IP:/目标文件绝对路径 /本地保存路径       // 下载
实例:

//本地 -> 远端(上传):如果上传的是文件夹, 必须加 -r 递归参数 否则会出现 not a regular file错误
scp [-r] <本地文件实际目录> <远端主机名>@<远端主机IP>:<远端文件存放目录>

//远端 -> 本地(下载):如果上传的是文件夹, 必须加 -r 递归参数 否则会出现 not a regular file错误
scp [-r] <远端主机名>@<远端主机IP>:<远端文件> <本地文件存放目录>

三、ssh服务器搭建出现的问题

ssh服务器日志路径

查看SSH服务日志: 检查目标服务器上SSH服务的日志文件(例如 /var/log/auth.log/var/log/secure),寻找任何可能指示连接问题的错误

1、auth.log 频繁出现Cron: pam_unix (cron:session): session opened/closed for user root by (uid=0)

这个其实不是一个错误,只是日志中对 cron 定时任务的记录。但是在排查问题是会影响我们的判断,这些信息可能会占据大量日志空间,尤其是如果 cron 频繁执行任务时会导致大量的日志条目。

下面提供了在 Debian/Ubuntu 系统上更改日志记录设置的步骤,以减少在 auth.log 中记录由 cron 定时任务引起的会话开启和关闭信息。

修改过程:

1,进入/etc/pam.d目录

2,打开文件 common-session-noninteractive

3,查找 session required pam_unix.so 内容(一般在最后)

4,在这一行上方添加

session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid

5,保存并退出

6,重启crond服务(Ubuntu为cron):service cron restart

2、解决:no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

第一种方法,在当前用户的.ssh目录下新建config文件,如当前用户为root

vi  ~/.ssh/config
Host *
KexAlgorithms +diffie-hellman-group1-sha1

此方法只对当前用户生效,使用其他用户是又会报错。

第二种方法,修改/etc/ssh/ssh_config文件,在最末尾加入即可。

KexAlgorithms +diffie-hellman-group1-sha1

重启服务

重启sshd服务
systemctl restart sshd
或者
sudo systemctl reload sshd
或者
/etc/init.d/sshd restart

将以下行添加到 /etc/ssh/sshd_config 文件的结尾处:

KexAlgorithms diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

确保在编辑配置文件之后,重新加载SSH服务以使更改生效。在大多数Linux系统中,你可以使用类似下面的命令重新加载SSH服务:

sudo systemctl reload sshd

这将重新加载SSH服务的配置,使新的密钥交换算法配置生效。

3、error: kex_exchange_identification: read: Connection reset by peer

待解决

相关内容分推荐:

SSH的免密登录详细步骤(注释+命令+图)_免密登录ssh-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式-分布式事务理论、模型、方案、框架

一、分布式事务理论模型 分布式事务问题也叫分布式数据一致性问题&#xff0c;简单来说就是如何在分布式场景中保证多个节点数据的一致性。分布式事务产生的核心原因在于存储资源的分布性&#xff0c;比如多个数据库&#xff0c;或者MySQL和Redis两种不同存储设备的数据一致性…

5. PyTorch——数据处理模块

1.数据加载 在PyTorch中&#xff0c;数据加载可通过自定义的数据集对象。数据集对象被抽象为Dataset类&#xff0c;实现自定义的数据集需要继承Dataset&#xff0c;并实现两个Python魔法方法&#xff1a; __getitem__&#xff1a;返回一条数据&#xff0c;或一个样本。obj[in…

鸿蒙开发之状态管理@Prop和@Link

一、用法 在父子组件需要进行数据同步的时候&#xff0c;可以通过Prop和Link装饰器来做到。在父组件中用State装饰&#xff0c;在自组件中用Prop或Link装饰。 结论&#xff1a;Prop用于子组件只监听父组件的数据改变而改变&#xff0c;自己不对数据改变 Link用于子组件与父组…

Skype的介绍及使用

介绍及使用说明 Windows自带的Skype是一款全球通用的即时通讯软件&#xff0c;它可以让用户通过文字、语音和视频进行免费的在线沟通。下面是Skype的使用说明&#xff1a; 1.安装和登录&#xff1a;如果你的Windows系统中没有预装Skype&#xff0c;你可以在Microsoft官…

锁定屏幕与挂起

概要&#xff1a; 本篇主要讲述Ubuntu22.04中的锁定屏幕和挂起 锁定屏幕就是大家通常所说的息屏、锁屏&#xff0c;英文单词是lock 挂起一般也被称为休眠、睡眠&#xff0c;英文单词是suspend 一、锁定屏幕 1、CtrlL 按下键盘上的CtrlL键&#xff0c;即可锁定屏幕&#x…

【华为鸿蒙系统学习】- HarmonyOS4.0开发工具和环境配置问题总结|自学篇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 官方链接 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装教程 &#xff08;…

【PTA刷题+代码+详解】求二叉树度为1的结点个数(递归法)

文章目录 题目C代码详解 题目 在二叉树T中&#xff0c;其度为1的结点是指某结点只有左孩子或只有右孩子。利用递归方法求二叉树T的度为1的结点个数。 1&#xff09;如果TNULL&#xff0c;则是空树&#xff0c;度为1的结点个数为0&#xff0c;返回值为0&#xff1b; 2&#xff0…

Python爬虫实战 | 爬取拼多多商品的详情价格SKU数据

本案例将为大家演示如何爬取拼多多商品的详情数据。目的是爬取大量的商品以及商品的评论&#xff0c;所以在程序设计上要考虑到该爬虫的高并发以及持久化存储。爬虫工具选用了Scrapy框架&#xff0c;以满足爬虫的高并发请求任务&#xff1b;持久化存储用了MongoDB&#xff0c;对…

python:五种算法(SSA、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、五种算法简介 1、麻雀搜索算法SSA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、粒子群优化算法PSO 5、遗传算法GA 二、5种算法求解23个函数 &#xff08;1&#xff09;23个函数简介 参考文献&#xff1a; [1] Yao X, Liu Y, Lin G M. Evolutionary programming made…

vue 集成行政区域选择插件region和数据回显

故事&#xff1a;最近&#xff0c;项目需要进行行政区域围栏的绘制&#xff0c;由于老旧项目是利用js保存全国行政区域地址和编码&#xff0c;在选择器select进行匹配显示&#xff0c;但此方法复杂&#xff0c;因此选择集成区域插件region 步骤一&#xff1a;用命令安装region…

Vue3-09-条件渲染-v-show 的基本使用

v-show 的作用 v-show 可以根据条件表达式的值【展示】或【隐藏】html 元素。v-show 的特点 v-show 的实现方式是 控制 dom 元素的 css的 display的属性&#xff0c; 因此&#xff0c;无论该元素是否展示&#xff0c;该元素都会正常渲染在页面上&#xff0c; 当v-show 的 条件…

如何通过 SSH 访问 VirtualBox 的虚机

VirtualBox 是一款免费虚机软件。在用户使用它安装了 linux 以后&#xff0c;它默认只提供了控制台的管理画面。 直接使用控制台管理 Linux 没有使用诸如 putty 或者 vscode 这样的 ssh 远程管理工具方便。那么可不可以直接使用 ssh 访问 VirtualBox 上的 Linux 呢&#xff1f…

GNN 学习笔记

稍微看一下之后备用。 【图神经网络综述】GNN原理&#xff0b;落地应用实现框架全解_gnn实现-CSDN博客 GNN相比CNN最大的区别在于数据结构&#xff0c;CNN一般作用在二维、三维数据里&#xff0c;如图像、表格数据等&#xff0c;可以进行卷积操作。而GNN作用在一个由节点和边…

模拟目录管理 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。 支持命令: 1)创建目录命令: mkdir 目录名称,如mkdir abc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作…

案例055:基于微信小程序的四六级词汇

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

超简单的新手重装Win10系统教程图解

如果我们的电脑系统出现问题了&#xff0c;那么就可以选择重装安装系统&#xff0c;轻轻松松解决系统问题&#xff0c;从而恢复对电脑的正常使用。但是&#xff0c;作为新手用户不懂很多的装机专业知识&#xff0c;所以重装系统的难度比较大&#xff0c;接下来小编给大家介绍超…

pytest-fixtured自动化测试详解

fixture的作用 1.同unittest的setup和teardown,作为测试前后的初始化设置。 fixture的使用 1.作为前置条件使用 2.fixture的的作用范围 1.作为前置条件使用 pytest.fixture() def a():return 3def test_b(a):assert a3 2.fixture的作用范围 首先实例化更高范围的fixture…

Javascript高频面试题

系列文章目录 文章目录 系列文章目录前言1.JavaScript常见数据类型null 和 undefind区别symbol&#xff08;ES6新增&#xff09;、bigInt&#xff08;ES10新增&#xff09; 2.JavaScript判断数据类型的方式3. 和 区别&#xff0c;分别在什么情况使用&#xff1f;4.变量声明 va…

Unity检测AssetBundle是否循环依赖

原理&#xff1a;bundle的依赖关系构建一个二维的矩阵图&#xff0c;如果对角线相互依赖&#xff08;用1标记&#xff09;则表示循环依赖。 using PlasticGui; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public cl…

Redis缓存异常问题,常用解决方案总结

前言 Redis缓存异常问题分别是&#xff1a;1.缓存雪崩。2.缓存预热。3.缓存穿透。4.缓存降级。5.缓存击穿&#xff0c;以 及对应Redis缓存异常问题解决方案。 1.缓存雪崩 1.1、什么是缓存雪崩 如果缓存集中在一段时间内失效&#xff0c;发生大量的缓存穿透&#xff0c;所有…