SSH远程控制及访问详解

SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的 Telent、RSH、RCP等应用相比,SSH 协议提供了更好的安全性。

一、sshd基本配置

现在我们是使用的XShell与服务器连接的,那么sshd服务就应该是处于运行的,下面我们用“netstat -ntap | grep 22”命令进行查看。

下面我们进入sshd的配置文件多其中的一些配置行进行了解。
Port 22: 监听端口号
ListenAddress 0.0.0.0: 监听地址
LoginGraceTime 2m: 登录验证时间为 2 分钟
PermitRootLogin yes: 允许root用户登录
MaxAuthTries 6: 验证登录时最大重试次数为 6
MaxSessions 10:访问最大连接数
PubkeyAuthentication yes:开启秘钥验证
开启22端口(去掉行首的“#”号)
输入命令“systemctl restart sshd”重启sshd服务
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问

下面我们使用另一台服务器test02对服务器test01进行远程控制。
cd /opt/(在test02远程连接的情况下进入test01的opt目录下)
touch aaa.txt(并创建文件aaa.txt成功)
ls(查看文件是否创建成功)
cd /opt/(返回test01并进入opt目录下)
ls(查看远程创建结果)
但是root的权限毕竟太高,随便谁都可以远程连接,难免安全风险过高。所以下面我们设置root用户禁止登录。
首先进入sshd配置文件,修改配置行PermitRootLogin no(禁止root用户登录)
systemctl restart sshd(重启sshd服务)
创建一个新用户tom
useradd tom(创建用户tom)
passwd tom(设置密码)
此时我们再在另一台服务器上输入“ssh root@192.168.131.133”,root已经不能登录了。
但方法总比困哪多。我们可以先试用tom用户登录在切换到root
ssh tom@192.168.131.133
su - root
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
所以光禁止root用户登录并不能完全解决我们的安全隐患。
我们可以进入pam.d模块进行相关安全的修改。(vim /etc/pam.d/su)
启动wheel组,删除行首的“#”号即可
从上面我们可以得知用户tom并不属于wheel组,所以此时wheel组已经不能再随意切换到root助理,只有属于wheel组的用户可以切换到root用户,无疑是增加了我们的服务器安全系数。
SSH远程控制及访问
SSH远程控制及访问
为了防止暴力破解,我们还可以对我们的验证登录的最大重试次数进行设置,我们首先进入sshd配置文件开启最大验证次数的配置行(去除行首的“#”即可)。
修改完配置文件记得重启服务。“systemctl restart sshd”
但是我们实际验证时发现,因为服务器默认的最大验证次数是3次,所以我们的设置并未起到作用。
若是想配置起到作用我们需要执行命令“ssh -o NumberOfPasswordPrompts=8 fan@192.168.131.133”。

SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问

为了进一步加强我们的服务器安全,我们还可以设置黑白名单。
AllowUsers 用户1 用户2(允许登陆的用户)
或者 DenyUsers 用户1 用户2(禁止登录的用户)
两条命令不可以同时使用,还可以同时限制用户的登录地址
下面我们以白名单AllowUsers进行举例。
在sshd的配置文件中添加配置行“AllowUsers fan@192.168.131.129 jerry”(允许用户fan登录固定ip的服务器,允许用户jerry登录所有服务器)。
ssh fan@192.168.131.133(fan用户可以登录)
ssh jerry@192.168.131.133(jerry用户可以登录)
ssh tom@192.168.131.133(tom用户无法登陆)
只有在白名单的用户才可以登录。
SSH远程控制及访问
SSH远程控制及访问

二、sshd密钥对登录

开启秘钥验证配置行“PubkeyAuthentication yes”。
此时我们的服务器用户目录中并没有秘钥的配置文件。
进入到客户单创建新用户kefu。
在客户端创建秘钥“ssh-keyqen -t ecdsa”
输入秘钥验证的密码:自己定义
ls(查看秘钥文件是否创建成功)
ssh-copy-id -i id-ecdsa.pub fan@192.168.131.133(把秘钥文件推送给服务端)
yes(确认推送)
输入用户fan的登录密码
这时我们在用户fan的家目录就可以找到.ssh秘钥文件了。
下面我们就可以尝试使用密钥登陆了,这时登录的验证方式的密码就是我们刚才设置的密钥对密码。
对于常用到的用户我们还可以对其设置免密码登录:ssh-agent bash
ssh-add
输入密钥对密码
以后我们的kefu用户就可以免密码登录远程服务器了。
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问

三、scp、sftp命令程序

在客户端分别创建文档“ssh_client”和文件夹“test”
之后我们把文档tssh_client和文件夹test远程复制到服务器端。
进入服务端的及目录查看复制结果
使用命令“sftp root@192.168.131.133”在客户端远程交互服务器的文档管理
get ssh_client :可以从远程服务器下载文档ssh_client。
up ssh_server:可以远程上传文档ssh_server到服务器。

SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问

四、TCP Wrappers的访问策略

TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行
访问控制。对应的两个策略文件为/etc/hosts.allow 和/etc/hosts.deny,分别用来设置允
许和拒绝的策略。

关于 TCP Wrappers 机制的访问策略,应用时遵循以下顺序和原则:首先检查/etc/hosts.allow 文 件 , 如 果 找 到 相 匹 配 的 策 略 ,则 允 许 访 问 ; 否 则 继 续 检 查/etc/hosts.deny 文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。

只希望从 IP 地址为192.168.131.129主机 访问 sshd 服务,其他地址被拒绝,可以执行以下操作
vim /etc/hosts.allow (进入白名单策略文件)
sshd:192.168.131.129(输入允许登录的主机IP)
:wq(保存并退出)
vim /etc/hosts.deny(进入黑名单策略文件)
sshd:ALL(禁止所有)
:wq(保存并退出)

SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问
SSH远程控制及访问