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、确保您当前的软件包是最新的
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 毗连,请运行以下下令
如果您不确定是否正在利用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 配置文件并查找以下行
确保将您的端口更改为未为其他协议保存的端口,更改默认 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
- 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博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |