远程访问及控制

实验材料

centos7两台使用xshell连接
一台192.168.100.102
一台192.168.100.103

配置OpenSSH服务

1.服务监听选项

都可以不用改

[root@CentOS7-02 ~]# vim /etc/ssh/sshd_config

上面是ssh的主配置文件

centos7 设置root 远程登录 centos7允许远程登录_centos7SSH服务配置


还有如下这个项把#去掉,禁用DNS反向解析,可以增加DNS解析速度

UseDNS no

[root@CentOS7-02 ~]# systemctl restart sshd (重启服务生效)

2.用户登陆控制

这些选项默认都是#号的需要手动打开

centos7 设置root 远程登录 centos7允许远程登录_服务器_02


还有一个禁止空密码登陆是如下配置项

PermitEmptyPasswords no (no是禁止的意思)

[root@CentOS7-02 ~]# systemctl restart sshd

然后创建一个用户zhangsan并设置密码,再创建一个lisi用户不设置密码
断开xshell重连发现root用户登不上,zhangsan可以登上,lisi不可登上就对了
记得回到linux虚拟机里,把上面的禁止root登陆的配置项给#了,要不然Xshell,root就登不上

3.登陆验证方式
密码验证:使用服务器中本地用户的登录名称,密码验证;
密钥对验证:要求提供相匹配的密钥信息才能通过验证,避免交换,更安全
下面这两个默认是#的,要去掉可以一起开启,
密钥对验证优先被使用

**

下面是为后面做密钥对做的准备,如果要做密钥对验证记住两边都要开启密钥对验证

**
 [root@CentOS7-02 ~]# vim /etc/ssh/sshd_config (客户机102)
 [root@centos7-03 ~]# vim /etc/ssh/sshd_config (SSH服务器103)
PasswordAuthentication yes :启用密码验证
PubkeyAuthentication yes :启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys (指定公钥库位置默认开启的不用管)
 [root@CentOS7-02 ~]# systemctl restart sshd

使用SSH客户端

1.命令程序ssh,scp,sftp

1)ssh远程登陆

在102服务器连103

可以发现命令行前面的主机名变了就对了

centos7 设置root 远程登录 centos7允许远程登录_centos7SSH服务配置_03

[root@CentOS7-02 ~]# ssh -p 1234 root@192.168.100.103

如果你改了端口号可以这样连

2)scp远程复制

exit :回到原主机

centos7 设置root 远程登录 centos7允许远程登录_centos7SSH配置密钥对的验证_04


3)sftp安全FTP

在102的root目录下创建一个文件102
103的root下创建文件103 (这样方便看效果)

centos7 设置root 远程登录 centos7允许远程登录_centos7远程访问及控制_05

构建密钥对的SSH体系(重点)

1.在客户端创建密钥对

192.168.100.102当客户端
192.168.100.103是ssh服务器

进入102

创建用户zhangsan并设置密码

root用户下

centos7 设置root 远程登录 centos7允许远程登录_centos7远程访问及控制_06


2.将公钥文件上传至服务器

centos7 设置root 远程登录 centos7允许远程登录_centos7SSH服务配置_07


3.在服务器中导入公钥文本进入103 SSH服务器

创建用户李四并设置密码(这是一会客户端要使用的账号) 并导入公钥

centos7 设置root 远程登录 centos7允许远程登录_centos7远程访问及控制_08


4.在客户端使用密钥对验证

进人102客户端
当前用户是zhangsan可以直接使用lisi登陆,如果当前是其他用户使用lisi用户需要输入密码

这是因为zhangsan的公钥文件SSH服务器lisi那里有,而本地root用户的公钥文件SSH服务器lisi那里没有

而zhangsan本地有私钥和远端SSH服务器可以匹配直接以lisi登陆

centos7 设置root 远程登录 centos7允许远程登录_centos7SSH配置密钥对的验证_09


5.第二种实现的方法

上面一共有四步,2,3步可以放到一起执行
首先客户端新创建用户ajbn,SSH服务器用户ajbm并都设置密码

首先进入客户端

[root@CentOS7-02 ~]# su ajbn
 [ajbn@CentOS7-02 root]$ ssh-keygen -t ecdsa (这边和上面一样,一直回车)
 [ajbn@CentOS7-02 root]$ ssh-copy-id -i ~/.ssh/id_ecdsa.pub ajbm@192.168.100.103 (直接上传到远端的ajbm目录中)


进入SSH服务器
[root@centos7-03 tmp]# tail -l /home/ajbm/.ssh/authorized_keys
(如果这里发现没有,就把这个./ssh目录的权限改成777)
再进入客户端验证
[ajbn@CentOS7-02 root]$ ssh ajbm@192.168.100.103 (不需要密码直接登陆)

TCP Wrappers访问控制

这两个文件
vim /etc/hosts.allow(允许的)
/etc/hosts.deny (拒绝的)

例如如下 这个配置项是手动打的

允许192.168.100.1主机SSH连接而拒绝所有人
vim /etc/hosts.allow(允许的)

centos7 设置root 远程登录 centos7允许远程登录_centos7 设置root 远程登录_10


vim /etc/hosts.deny (拒绝的) (这个配置项没有需要手打)

centos7 设置root 远程登录 centos7允许远程登录_centos7 设置root 远程登录_11

[root@CentOS7-02 ~]# systemctl restart sshd (重启服务生效)

如果你把本地对应虚拟机的vm网卡的ip地址改为其他的ip不是192.168.100.1
断掉Xshell重新连接发现连不上了
(改回来就可以连了)

允许个别人连接的话必须拒绝所有人要不没有效果

如果是拒接个别主机的话反过来就行了

实验完毕