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

news2024/10/5 17:20:10

 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博客

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

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

相关文章

[Halcon模块] Halcon13.0查询算子模块归属

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

django实现增删改查分页接口

django实现增删改查分页接口(小白必备) 在上篇文章中我使用nodejs实现了增删改查分页接口&#xff0c;这一篇我们则使用django实现。 1.创建一个django项目&#xff0c;命令如下 python manage.py startapp myapp 2.在你自己的myapp文件夹中的models.py中定义你们自己的模型 f…

【每日一题】2697. 字典序最小回文串-2023.12.13

题目&#xff1a; 2697. 字典序最小回文串 给你一个由 小写英文字母 组成的字符串 s &#xff0c;你可以对其执行一些操作。在一步操作中&#xff0c;你可以用其他小写英文字母 替换 s 中的一个字符。 请你执行 尽可能少的操作 &#xff0c;使 s 变成一个 回文串 。如果执行…

数字化转型对企业有什么好处?

引言 数字化转型已经成为当今商业领域中的一股强大力量&#xff0c;它不仅仅是简单的技术更新&#xff0c;更是企业发展的重要战略转变。随着科技的迅猛发展和全球化竞争的加剧&#xff0c;企业们正在积极探索如何将数字化的力量融入到他们的运营和战略中。 数字化转型不仅是传…

SSD Wear Leveling磨损均衡,并不是一直有效,甚至有负面作用!-part1

1.引言 上一篇WL基础文章中&#xff0c;我们介绍了SSD为何需要Wear Leveling磨损均衡的基本原理和分类&#xff0c;阅读本文之前&#xff0c;建议先了解WL磨损均衡的相关背景&#xff1a; 扩展阅读&#xff1a;深入解析SSD Wear Leveling磨损均衡技术&#xff1a;如何让你的硬…

1.了解数据结构和算法

1.了解数据结构和算法 1.1 二分查找 二分查找&#xff08;Binary Search&#xff09;是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半&#xff0c;然后比较目标值与中间元素的大小关系&#xff0c;从而确定应该在左半部分还是右半部分继续查找。这个…

python读取csv文件

在Python中&#xff0c;你可以使用pandas库来读取CSV文件。以下是一个基本的例子&#xff1a; import pandas as pd# 读取CSV文件data pd.read_csv(filename.csv)# 显示前几行数据print(data.head()) 这里&#xff0c;filename.csv应该被替换为你的CSV文件的实际路径和名称。…

Python:核心知识点整理大全16-笔记

目录 8.2.3 默认值 8.2.4 等效的函数调用 8.2.5 避免实参错误 8.3 返回值 8.3.1 返回简单值 formatted_name.py 8.3.2 让实参变成可选的 8.3.3 返回字典 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&#xff1a; 8.2.3 默认值 编写函数时&#xff…

巧妙的使用WPF中的资源

其实&#xff0c;在wpf中&#xff0c;最核心的就是xaml&#xff0c;因为只有xaml&#xff0c;才能体现出用的是wpf&#xff0c;而不是普通的cs文件&#xff0c;cs文件在winform中等等程序都可以使用的&#xff0c;唯独xaml才是wpf中最重要的&#xff0c;最精华的东西&#xff0…

天软基金经理因子定期报告(2023-12)

天软基金经理因子定期报告&#xff08;2023-12&#xff09;报告概要&#xff1a; 从投资业绩来看&#xff0c;葛兰长期业绩表现优于市场&#xff0c;任职以来年化收益率为12.714%&#xff0c;最大回撤为-53.460%。 从投资能力来看&#xff0c;其选股能力与收益择时能力较为突出…

智能优化算法应用:基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.入侵杂草算法4.实验参数设定5.算法结果6.…

Rust语言GUI库之gtk安装

文章目录 工具链安装管理软件vcpkgvcpkg介绍安装vcpkg 安装gtk遇到的问题Rust其他依赖package-confg 工具链安装管理软件vcpkg vcpkg介绍 在使用C/C编写项目时, 引用第三方库是很麻烦的事, 需要手动下载源码然后编译最后再添加到项目里&#xff0c;配置头文件、lib、dll&…

Tensorboard可视化远程服务器上保存的训练文件

方法一&#xff1a; 最简单的&#xff0c;把服务器上的训练权重文件下载到本地&#xff0c;使用本地的tensorboard打开 方法二&#xff1a; 使用VsCode的remote ssh插件&#xff0c;可以通过端口映射&#xff0c;将远程的6006端口映射到本地&#xff0c;直接访本地的6006即可…

华清远见嵌入式学习——QT——作业4

作业要求&#xff1a; 代码运行效果图&#xff1a; 代码&#xff1a; 头文件&#xff1a; #ifndef ALARMCLOCK_H #define ALARMCLOCK_H#include <QWidget> #include <QTimerEvent> #include <QTimer> #include <QTime> #include <QTextToSpeech&g…

优雅玩转实验室服务器(二)传输文件

使用服务器最重要的肯定是传输文件了&#xff0c;我们不仅需要本地的一些资源上传到服务器&#xff0c;好进行实验&#xff0c;也需要将服务器计算得到的实验结果传输到本地&#xff0c;来进行预览或者报告撰写。 首先&#xff0c;由于涉及到服务器操作&#xff0c;我强烈推荐…

[C++进阶]---AVL树模拟实现

目录 1.AVL树的概念2.AVL树模拟实现2.1AVL树节点的定义2.2AVL的插入2.3AVL树的旋转2.3.1左单旋2.3.2右单旋2.3.3右左双旋2.3.3.1旋转情况分析2.3.3.2平衡因子更新分析 2.3.4右左双旋2.3.4.1旋转情况分析2.3.4.2平衡因子更新分析 2.3.5AVL树的验证 3.AVL模拟实现源码4.总结 1.AV…

yarn或者pnpm第一次执行的时候遇到报错yarn : 无法加载文件......因为在此系统上禁止运行脚本

报错&#xff1a; yarn : 无法加载文件 C:\Users\rina2\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/http://go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 解决方案&#xff1a…

基于龙蜥(AnolisOS7.9)编译ZLMediaKit

系统安装 镜像下载 下载地址&#xff1a;https://openanolis.cn/download VirtualBox 下载地址&#xff1a;https://download.virtualbox.org/virtualbox/7.0.12/VirtualBox-7.0.12-159484-Win.exe ZLMediaKit编译 编译器和Cmake sudo yum -y install gcc sudo yum -y …

移动端机器学习框架 MDL 简介与实践

Mobile-deep-learning&#xff08;MDL&#xff09; MDL 是百度研发的可以部署在移动端的基于卷积神经网络实现的移动端框架&#xff0c;可以应用在图像识别领域。 具体应用&#xff1a;在手机百度 App 中&#xff0c;用户只需要点击自动拍开关&#xff0c;将手机对准物体&…

二、SpringFramework 介绍

2.1 Spring 和 SpringFramework概念 https://spring.io/projects 广义的 Spring&#xff1a;Spring 技术栈&#xff08;全家桶&#xff09; 广义上的 Spring 泛指以 Spring Framework 为基础的 Spring 技术栈。 经过十多年的发展&#xff0c;Spring 已经不再是一个单纯的应…