SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前,一般使用FTP或Telnet来进行远程登录。但是因为它们以明文的形式在网络中传输账户密码和数据信息,因此很不安全,很容易受到黑客发起的中间人攻击,这轻则篡改传输的数据信息,重则直接抓取服务器的账户密码。
想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:
基于口令的验证—用账户和密码来验证登录;
基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。
前文曾多次强调“Linux系统中的一切都是文件”,因此在Linux系统中修改服务程序的运行参数,实际上就是在修改程序配置文件的过程。sshd服务的配置信息保存在/etc/ssh/sshd_config文件中。运维人员一般会把保存着最主要配置信息的文件称为主配置文件,而配置文件中有许多以井号开头的注释行,要想让这些配置参数生效,需要在修改参数后再去掉前面的井号。sshd服务配置文件中包含的重要参数如表9-1所示。
表9-1 sshd服务配置文件中包含的参数以及作用
参数 作用 Port 22 默认的sshd服务端口 ListenAddress 0.0.0.0 设定sshd服务器监听的IP地址 Protocol 2 SSH协议的版本号 HostKey /tc/ssh/ssh_host_key SSH协议版本为1时,DES私钥存放的位置 HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,RSA私钥存放的位置 HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为2时,DSA私钥存放的位置 PermitRootLogin yes 设定是否允许root管理员直接登录 StrictModes yes 当远程用户的私钥改变时直接拒绝连接 MaxAuthTries 6 最大密码尝试次数 MaxSessions 10 最大终端数 PasswordAuthentication yes 是否允许密码验证 PermitEmptyPasswords no 是否允许空密码登录(很不安全) 在RHEL 7系统中,已经默认安装并启用了sshd服务程序。接下来使用ssh命令进行远程连接,其格式为“ssh [参数] 主机IP地址”。要退出登录则执行exit命令。
[root@linuxprobe ~]# ssh 192.168.10.10 The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established. ECDSA key fingerprint is 4f:a7:91:9e:8d:6f:b9:48:02:32:61:95:48:ed:1e:3f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts. root@192.168.10.10's password:此处输入远程主机root管理员的密码 Last login: Wed Apr 15 15:54:21 2017 from 192.168.10.10 [root@linuxprobe ~]# [root@linuxprobe ~]# exit logout Connection to 192.168.10.10 closed. 如果禁止以root管理员的身份远程登录到服务器,则可以大大降低被黑客暴力破解密码的几率。下面进行相应配置。首先使用Vim文本编辑器打开sshd服务的主配置文件,然后把第48行#PermitRootLogin yes参数前的井号(#)去掉,并把参数值yes改成no,这样就不再允许root管理员远程登录了。记得最后保存文件并退出。
[root@linuxprobe ~]# vim /etc/ssh/sshd_config ………………省略部分输出信息……………… 46 47 #LoginGraceTime 2m 48 PermitRootLogin no 49 #StrictModes yes 50 #MaxAuthTries 6 51 #MaxSessions 10 52 ………………省略部分输出信息……………… 再次提醒的是,一般的服务程序并不会在配置文件修改之后立即获得最新的参数。如果想让新配置文件生效,则需要手动重启相应的服务程序。最好也将这个服务程序加入到开机启动项中,这样系统在下一次启动时,该服务程序便会自动运行,继续为用户提供服务。
[root@linuxprobe ~]# systemctl restart sshd [root@linuxprobe ~]# systemctl enable sshd 这样一来,当root管理员再来尝试访问sshd服务程序时,系统会提示不可访问的错误信息。虽然sshd服务程序的参数相对比较简单,但这就是在Linux系统中配置服务程序的正确方法。大家要做的是举一反三、活学活用,这样即便以后遇到了陌生的服务,也一样可以搞定了。
[root@linuxprobe ~]# ssh 192.168.10.10 root@192.168.10.10's password:此处输入远程主机root用户的密码 Permission denied, please try again.
2023 chaojicainiao.com MIT license