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

打印 上一主题 下一主题

主题 709|帖子 709|积分 2127

 SSH是Secure Shell的缩写,是一种网络协议,用于通过本地或远程网络在盘算机上进行远程登录和下令操作。SSH 是 Telnet 协议的演变:正如其名称所描述的,SSH 是安全的,并对通过网络传输的数据进行加密。
  SSH 是目前较为可靠,转为远程登录会话和其他网络服务提供的安全协议。SSH 常用于远程登录,远程拷贝文件等。利用 SSH 毗连远程服务器,服务器端要安装 SSH 服务器并开启服务,客户端安装对应的 SSH 客户端。
   本文章将先容如安在 Ubuntu 20.04 上安装并启用 SSH 服务器
  环境:

  1. 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、确保您当前的软件包是最新的

  1. sudo apt-get update
复制代码
2、 安装 SSH 服务器

  1. sudo apt-get install openssh-server
复制代码
2.SSH相关下令(Ubuntu)

  1. sudo service ssh start          // 启动 SSH 服务
  2. sudo service ssh stop           // 停止 SSH 服务
  3. sudo service ssh restart        // 重启 SSH 服务
  4. sudo service ssh status         // 查询 SSH 服务状态
  5. sudo systemctl status sshd      //检查ssh服务确实在运行
  6. ps -A | grep "ssh"              // 查询 SSH 服务进程
复制代码
4、在防火墙设置上启用 SSH 流量

如果您利用UFW作为 Ubuntu 20.04 主机上的默认防火墙,则可能必要在主机上允许 SSH 毗连。
要在主机上启用 SSH 毗连,请运行以下下令
  1. sudo ufw allow ssh
复制代码

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

此时主机上不必要设置允许 SSH 毗连

此时主机上必要设置允许 SSH 毗连
5.在体系启动时启用 SSH 服务器

要检查您的服务是否启用,您可以运行以下下令
  1. sudo systemctl list-unit-files | grep enabled | grep ssh
复制代码
如果终端上没有结果,您应该“启用”该服务以便在启动时启动它
  1. 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 配置文件并查找以下行
  1. #Port 22
复制代码
确保将您的端口更改为未为其他协议保存的端口,更改默认 SSH 端口时要小心,毗连时必须指定它。

在 SSH 服务器上禁用 root 登录

默认情况下,在最近的发行版中,root 登录设置为“禁止暗码”,也就是说必要设置 SSH 密钥并利用它们才能以 root 身份进行毗连。
即使我们在没有暗码的情况下毗连,也不发起利用 root 登录:如果密钥被泄漏,您的整个主机就会被泄漏。因此,您可以将此选项设置为“否”以完全限定它。
  1. #PermitRootLogin
  2. PermitRootLogin no
复制代码

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

为了应用更改,您必要重新启动 SSH 服务器。
  1. sudo systemctl restart sshd
  2. sudo systemctl status sshd
复制代码
二、ssh客户端、scp访问SSH服务


1.SSH 客户端访问SSH服务

  1. // 连接远程主机(默认 SSH 端口为 22), 连接上后需要输入用户的密码
  2. ssh 用户名@<主机IP>
  3. // 指定端口连接
  4. ssh 用户名@<主机IP>  -p <port>
复制代码
2. SCP 客户端访问SSH服务

SCP, Secure Copy。SCP 相当于 本地的 CP 下令, 只不过 SCP 用于夸主机远程操作。
终端利用 SCP 下令访问远程主机, 远程主机必须已成功安装并启动 openssh-server 服务。
格式: 
    scp -r /本地文件路径 目标用户名@目标主机IP:/目标文件绝对路径       // 上传
    scp -r 目标用户名@目标主机IP:/目标文件绝对路径 /本地保存路径       // 下载
实例:
  1. //本地 -> 远端(上传):如果上传的是文件夹, 必须加 -r 递归参数 否则会出现 not a regular file错误
  2. scp [-r] <本地文件实际目录> <远端主机名>@<远端主机IP>:<远端文件存放目录>
  3. //远端 -> 本地(下载):如果上传的是文件夹, 必须加 -r 递归参数 否则会出现 not a regular file错误
  4. 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
  1. vi  ~/.ssh/config
复制代码
  1. Host *
  2. KexAlgorithms +diffie-hellman-group1-sha1
复制代码
此方法只对当前用户收效,利用其他用户是又会报错。
第二种方法,修改/etc/ssh/ssh_config文件,在最末尾加入即可。
  1. KexAlgorithms +diffie-hellman-group1-sha1
复制代码
重启服务
  1. 重启sshd服务
  2. systemctl restart sshd
  3. 或者
  4. sudo systemctl reload sshd
  5. 或者
  6. /etc/init.d/sshd restart
复制代码
将以下行添加到 /etc/ssh/sshd_config 文件的结尾处:
  1. KexAlgorithms diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
复制代码
确保在编辑配置文件之后,重新加载SSH服务以使更改收效。在大多数Linux体系中,你可以利用雷同下面的下令重新加载SSH服务:
  1. sudo systemctl reload sshd
复制代码
这将重新加载SSH服务的配置,使新的密钥互换算法配置收效。
3、error: kex_exchange_identification: read: Connection reset by peer

待解决



相关内容分保举:
SSH的免密登录详细步调(注释+下令+图)_免密登录ssh-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表