Linux 中的远程登陆服务
@TOP1. 实验环境配置:查看真实主机IP 用命令 ifconfig如图所示当前主机的IP 为:192.168.122.1在真实主机为 linux 时,通过以下设置让虚拟机和真实主机之间互通。在超级用户下输入命令 cd /etc/sysconfig/network-scripts/切换到对应的目录;输入命令 ls 查看当前目录中的文件有哪些,如果已经有 ifcfg-br0 网卡配置文件,则不需要
Linux 中的远程登陆服务
1. 实验环境配置
远程登陆服务这部分内容需要两台主机之间互通才可以达到一些实验的效果;在此次实验时用到的是真实主机和虚拟机,那么首先要做的就是为真实主机和虚拟机之间配置网络连接。
在配置之前我们应该知道自己真实主机的IP 是多少,可以用命令 ifconfig 查看主机IP。
如图所示当前主机的 IP 为:192.168.122.1
-
在超级用户下输入命令 cd /etc/sysconfig/network-scripts/ 切换到网络文件的目录中;输入命令 ls 查看当前目录中的文件有哪些,如果已经有 ifcfg-br0 网卡配置文件,则不需要再重新配置;
-
如果没有这个文件就要对其进行配置,输入命令 cp ifcfg-enp0s25 /mnt/ 把网卡配置文件复制到 /mnt/这个目录中去,以防后面设置时出现错误可以及时还原;再输入命令 cp ifcfg-enp0s25 ifcfg-br0 把网卡配置文件复制成网卡接口文件;输入命令 ls 确认复制的文件已经成功;接下来对这两个文件的内容进行修改,输入命令 vim ifcfg-enp0s25 打开 vim 编辑器,设置内容如下:
- 主要是为其做好桥接,输入命令 vim ifcfg-br0 打开 vim 编辑器,设置内容如下:
- 然后输入命令 reboot 重启系统。
- 在系统重启后输入命令 ssh -X root @192.168.122.1 以超级用户的身份控制当前这台主机,输入命令 bridge link ,查看网络桥接是否已经设置成功;
当enp3s0 行 br0 已经出现时,就说明网络桥接已经设置成功;
- 输入命令 virt-manager 用超级用户身份打开虚拟机管理界面,双击打开 westos_node1 虚拟机;
- 点击灯泡的标志,将内容设置成如图所示的样子,点击下方的Apply 按钮应用当前的设置;
- 点击灯泡标志左边的电脑图标再点击右边的暂停标识,打开虚拟机。 用超级用户登陆;在打开的 shell 窗口中输入命令 nm-cnnection-editor 来配置虚拟机的网络,输入命令后打开的界面如下图所示;
在当前页面把原有的虚拟机网络用减号删除;再点击加号,创建新的网络,设置如下:
如图设置虚拟机的ip 为192.168.122. 111 设置完成之后,选择save 保存,然后关闭窗口。
在对网络设置的过程中, shell 窗口中的会出现一些相应的提示。
- 在设置完网络配置之后在 shell 窗口中输入命令 ping 192.168.122.1 ,看虚拟机与真实主机是否互通。
当出现这些数字时就说明虚拟机与真实主机的网络桥接已经设置好了,现在网络是通的。接下来就可以在真实主机中输入命令 ssh -l root 192.168.122.111 以超级用户的身份连接到虚拟机。
2. Openssh 的功能
2.1 sshd 服务的用途
作用: 可以实现通过网络在远程主机中开启安全 shell 的操作。
全称 | 简写 | 代表的对象 |
---|---|---|
Secure SHell | ===>ssh | 客户端 |
Secure SHell daemon | ===>sshd | 服务端 |
2.2 安装包
当系统没有 openssh-server 这个安装包文件时,就无法提供 sshd 的服务。
2.3 主配置文件
在sshd 服务端它的主要配置文件都在 /etc/ssh/sshd_conf 这个文件中。
2.4 默认端口
在 sshd 的服务端,它的默认端口是 22,在系统中我们可以输入命令 ss -anltupe |grep sshd 将扫描到的端口过滤出来。
2.5 客户端命令
在 sshd 服务中,服务端就是自己 sshd ,的客户端就是 ssh。
3. ssh客户端
3.1 基本用法
ssh [-l 远程主机用户] <ip|hostname>
如输入 ssh -l root 192.168.122.111 表示通过 ssh 命令在 111 主机中以 root 身份开启远程 shell。
如图所示,在第一次建立ssh 服务时会提示你是否确认要建立连接,当输入 yes 之后,111 主机向当前主机发送身份公钥,并保存此公钥到 ~/.ssh/know_hosts ; 111主机持有私钥当客户主机再次连接时会对客户主机进行身份验证。
当身份验证信息改变时,再次连接时会提示身份验证失败,拒绝连接;并提示在那个/home/zxk/.ssh/known_hosts 文件的第一行出现错误。
此时, 输入命令 vim ~/.ssh/know_hosts 编辑出错的文件,将报错提示相应的行删除即可;再次连接获得新的公钥即可解决此问题。
3.2 ssh 常用参数
字符 | 含义 |
---|---|
-l | 指定登陆用户 |
-i | 指定私钥 |
-X | 开启图形 |
-f | 后台运行 |
-o | 指定连接参数 |
-t | 指定连接跳板 |
如:输入 ssh -x root 192.168.122.111 表示在打开的shell 中可以通过命令打开图形;
输入ssh -x root 192.168.122.111 gedit 会直接打开 111 主机的 gedit 而不会开启111主机的 shell ;
如果想要在后台运行则需要输入 ssh -fXl root 192.168.122.111 gedit,即可在当前主机的后台打开111主机中 gedit ;
输入 ssh -l westos 192.168.122.111 -o “StrictHostKeyChecking=no” 首次连接不需要输入yes;
当一个主机没有对我们开放时,我们可以通过调用一个我们可以连接的主机,以这个主机为跳板再连接那个我们不能直接连接的主机即可。可以通过命令 ssh -l root 192.168.122.111 -t ssh -l root 192.168.122.105 ,表示以111 主机的身份再去连接105主机。
4. sshd key 认证
4.1 认证类型
- 对称加密
- 加密和解密是同一串字符(如 ssh 连接时会自动生成公钥,属于典型的对称加密)
- 容易泄漏
- 可暴力破解
- 容易遗忘
- 非对称加密
- 加密用公钥,解密用私钥
- 不会被盗用
- 攻击者无法通过无密钥方式登陆服务器
4.2 生成非对称加密密钥
方法1
输入命令 ssh-keygen 设定密钥
内容提示解释:
Enter file in which to save the key (/hoom/zxk/.ssh/id_rsa): 指定保存密钥的文件,此处不做设置,会自动默认保存到 /hoom/zxk/.ssh/id_rsa.
Enter passphrase (empty for no passphrase): 设置密钥密码,如果要设置密码则密码必须大于4位;此处我们不做设置,直接回车,表示免密登陆.
Enter same passphrase again: 确认密码,如果上一步设置了密码,此处再次输入即可,如果没做设置直接回车即可.
Your identification has been saved in /hoom/zxk/.ssh/id_rsa. 表示你的私钥存放的目录为/hoom/zxk/.ssh/id_rsa.
Your public key has been saved in /hoom/zxk/.ssh/id_rsa.pub. 表示公钥存放的文件为 /hoom/zxk/.ssh/id_rsa.pub
此时在 /hoom/zxk/.ssh 目录中会有两个文件,id_rsa 和 id_rsa.pub,一个为私钥一个为公钥;此处还有一个文件为 known_hosts 是我们在之前做连接时生成的对称加密的私钥。
方法二
方法一用到的时交互式的方法来设置加密,我们还可以用到非交互式的方法来加密。可以输入 ssh-keygen -f /root/.ssh/id_rsa -P “” -f 表示指定私钥的目录,- P 表示指定密码 “” 密码为空,也就是和之前一样的免密登陆。
4.3 对服务器加密
在上面我们虽然已经用非对称加密的方式设置了私钥和公钥,但只是在当前主机上生成,对ssh 并无影响;此时我们应该将公钥给予为我们提供 sshd 服务的主机,在下次连接时才会以非对称加密的方式进行验证。
输入 ssh-copy-id -i /hoom/zxk/.ssh/id_rsa.pub username@server ip
如输入 ssh-copy-id -i /hoom/zxk/.ssh/id_rsa.pub root@192.168.122.111 表示对111主机的 root 用户加密。
在对服务器进行加密之后,此时在服务器主机上的 ~./.ssh/目录中会生成一个 authorized_keys 的文件,文件内容和真实主机中的 /hoom/zxk/.ssh/id_rsa.pub 的文件内容一致;
在对服务器加密之后,在连接远程主机的时候不会再输入密码;
虽然我们已经做了加密认证,但如果当前主机中的私钥不在时.ssh 目录中时,我们在连接远程主机的时候,就需要输入远程主机的密码进行验证;
如果私钥在正确的位置,但是公钥丢失,不在当前的目录中,我们在连接时还是需要输入密码建立认证。
5. sshd 安全优化参数详解
在做服务端 sshd 的安全参数优化时,首先用 getenforce 命令查看selinux 是否关闭,如果显示disable 说明已经关闭;如果显示 enforcing 则需要手动关闭,通过输入命令 vim /etc/selinux/config,要把文件中的 selinux=enforcing 修改为 selinux=disabled;完成之后需要执行 reboot 命令重启系统。
字符 | 含义 |
---|---|
Port 2222 | 设定端口为2222,一般端口默认都为22 |
PermitRootLogin yes(no) | 对超级用户登陆是否禁止 |
PasswordAuthentication yes(no) | 是否开启原始密码认证方式 |
AllowUsers lee | 用户白名单(如果设置了白名单,则只有白名单用户才能登陆) |
DenyUsers lee | 用户黑名单(如果设置了用户黑名单,则黑名单内的用户不能在远程登陆) |
如果想要查看当前服务的端口,可以输入ss -anltupe | grep sshd 命令来扫描端口,并将sshd 服务的端口过滤出来;如图此服务的端口默认为22.
我们对 /etc/ssh/sshd_config 文件进行编辑,对sshd 服务的参数做修改,主配置文件中的 # 表示系统不识别,需要被系统识别就应该删除 # ,在每次修改之后需要输入命令 systemctl restart sshd 重启服务。
在修改端口之前我们应该关闭火墙,通过输入命令 systemctl disable --now firewalld ,否则实验达不到效果。
- 如修改端口为1775,在重启服务之后,此时连接需要用参数-p 指定端口才可以连接成功;
如修改配置文件中的第 46 行内容,将 yes 改为 no ,表示禁止超级用户登陆;
-
在修改之后,远程主机的普通用户在输入密码通过验证之后可以登陆,此时已经做了加密认证的 root 用户,即使输入正确的密码也不能再登陆;
-
如在第 47 行输入命令 DenyUsers kkk ,表示将 kkk 这个用户设置为黑名单,此用户不能远程登陆;
修改之后,普通用户可以用密码登陆,超级用户可以免密登陆;但是黑名单的用户即使输入正确的密码还是不能远程登陆;
- 如在第 47 增添命令 AllowUsers kkk ,表示为服务端设置白名单用户 kkk,表示远程登陆只允许 kkk 这个用户登陆;
可见普通用户输入正确密码登陆不成功,超级用户即使已经建立了认证,也还是需要输入密码,并且正确的密码也不能登陆;而普通用户 kkk 输入密码即可登陆成功;
- 在前面的操作中,即使已经做了服务认证,但是没有做认证的用户还是可以用密码的方式登陆,这对于远程服务主机来说是非常不安全的行为;为了提升安全性可以关闭原始密码认证方式,如在配置文件第 73 行将原始密码认证关闭;
如图所示,在原始密码认证关闭之后,此时只能是做过服务认证的 root 用户免密登陆,而其他用户不能登陆,请求直接被否定,没有输入密码的机会。
更多推荐
所有评论(0)