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服务

下面我们使用另一台服务器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 所以光禁止root用户登录并不能完全解决我们的安全隐患。 我们可以进入pam.d模块进行相关安全的修改。(vim /etc/pam.d/su) 启动wheel组,删除行首的“#”号即可 从上面我们可以得知用户tom并不属于wheel组,所以此时wheel组已经不能再随意切换到root助理,只有属于wheel组的用户可以切换到root用户,无疑是增加了我们的服务器安全系数。 为了防止破解,我们还可以对我们的验证登录的最大重试次数进行设置,我们首先进入sshd配置文件开启最大验证次数的配置行(去除行首的“#”即可)。 修改完配置文件记得重启服务。“systemctl restart sshd” 但是我们实际验证时发现,因为服务器默认的最大验证次数是3次,所以我们的设置并未起到作用。 若是想配置起到作用我们需要执行命令“ssh -o NumberOfPasswordPrompts=8 fan@192.168.131.133”。

为了进一步加强我们的服务器安全,我们还可以设置黑白名单。 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用户无法登陆) 只有在白名单的用户才可以登录。

二、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用户就可以免密码登录远程服务器了。

三、scp、sftp命令程序

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

四、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(保存并退出)