通过前面十余篇文章的介绍,相信已经初步入门Linux本地管理的基本方法了,后续的文章将介绍Linux中常用的服务部署以及如何为外部提供相应的服务。
系列文章第三篇“linux入门系列3--linux远程登陆工具”初步介绍了几款用于Linux远程登录管理的工具,本文再来详细讲解下SSH协议以及对应的服务配置,从而更好的远程管理服务器。
提示:在进行操作之前请按前边系列文章的方法,新装或克隆准备2台Linux虚拟机,假设ip地址分别为192.168.78.100和192.168.78.104(需要根据自身实际情况来配置),用于演示linux系统之间的ssh登录。如果忘记如何准备2台虚拟机的,请参考前面文章“linux入门系列1--环境准备及linux安装”的第三节或“linux入门系列13--磁盘管理之RAID、LVM技术”中的1.3.1小节。
一、sshd远程控制服务 1.1 ssh概述SSH全称为Secure Shell,是一种能够以安全的方式提供远程登录的协议,是目前远程管理 Linux 系统的首选方式。在SSH出现之前一般使用FTP以及Telnet来进行远程登录,但是他们都是以明文的形式在网络中传输账户密码和数据信息,因此非常不安全,这种方式很容易受到黑客发起的中间人攻击,从而篡改数据或截取服务器账号密码。
Linux中的sshd服务是基于SSH协议开发的一款远程管理服务程序,可以通过配置sshd服务来远程管理Linux系统。
sshd提供两种安全验证方法:基于口令的认证和基于密钥的认证。
基于口令的验证,是用账号密码来登录系统,正如我们前面“linux入门系列1--环境准备及linux安装”讲到,在安装系统时会默认创建root用户以及手动指定的test用户,用这些用户账号密码就可以登录使用系统。
基于密钥的认证,到目前的文章为止我们还没有介绍过,它需要在本地生产密钥对,然后把密钥对中的公钥上传到服务器,该方式相对口令认证来说更安全。
下文我们主要演示基于证书登录的方式,在演示之前,我们先配置sshd服务,在RHEL7中,已经默认安装并启用了sshd服务程序。
1.2 ssh服务配置sshd服务的配置信息保存在/etc/ssh/sshd_config文件中,查看文件内容可以看到里边有很多内容,但是大部分都是注释起来的,我们可以根据需要灵活进行配置。
常用配置参数及作用说明如下:
参数 说明Port sshd 服务端口,默认为22
ListenAddress 设定 sshd 服务器监听的 IP 地址,默认为0.0.0.0
Protocol SSH 协议的版本号
HostKey 值为/etc/ssh/ssh_host_key,表示SSH 协议版本为1时,DES 私钥存放的位置;值为/etc/ssh/ssh_host_rsa_key,表示SSH 协议版本为2时,RSA私钥存放的位置;值为/etc/ssh/ssh_host_dsa_key,表示SSH 协议版本为2时,DSA私钥存放的位置
PermitRootLogin 设定是否允许 root 管理员直接登录,默认为yes
StrictModes 当远程用户的私钥改变时直接拒绝连接,默认为yes
MaxAuthTries 最大密码尝试次数,默认为6
MaxSessions 10 最大终端数,默认为10
PasswordAuthentication 是否允许密码验证,默认为yes
PermitEmptyPasswords 是否允许空密码登录,默认为no
1.2.1 保存默认配置登录
由于RHEL7中已经默认安装并启用了sshd服务,并且参数都有默认值,因此我们不做任何配置就可以直接使用ssh登录到其他机器。
按开篇讲解的方法开启准备好的2台linux主机,然后进行如下操作:
[root@origin ~]# hostname origin [root@origin ~]# ssh 192.168.78.100 The authenticity of host \'192.168.78.100 (192.168.78.100)\' can\'t be established. ECDSA key fingerprint is c1:b8:67:1f:1d:c0:cd:6b:37:90:42:b1:c6:5a:e8:cf. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added \'192.168.78.100\' (ECDSA) to the list of known hosts. root@192.168.78.100\'s password: Last login: Sun Jan 5 11:19:40 2020 from 192.168.78.1 [root@heimatengyun ~]# hostname heimatengyun [root@heimatengyun ~]#由此可以见,未经过任何配置,直接通过ssh命令就可以从origin的主机远程登录到到了heimatengyun这台主机。
1.2.2 禁止root远程登录我们把上边heimatengyun这台主机通过修改配置参数,禁止root管理员远程登录,再来观察远程登录的效果。
首先:配置sshd服务,修改sshd服务的主配置文件/etc/ssh/sshd_config,找到#PermitRootLogin yes 取消注释并改为no。
[root@heimatengyun ~]# vim /etc/ssh/sshd_config ...省略部分内容 PermitRootLogin no ....省略部分内容保存并退出。重启sshd服务查看结果:
[root@heimatengyun ~]# systemctl restart sshd [root@heimatengyun ~]# systemctl enable sshd [root@heimatengyun ~]#注意,修改sshd配置后,一定要重启sshd服务才会使配置生效。