其次:我们再次从origin这台主机ssh到heimatengyun这台主机,看能否登陆
[root@origin ~]# ssh 192.168.78.100 root@192.168.78.100\'s password: Permission denied, please try again. root@192.168.78.100\'s password:可以看到,root已经无法远程登录进入系统了,包括外部的一切ssh工具都无法在登录系统,这样就大大降低被黑客暴力破解密码的几率。
如果想登录这台主机,由于我们目前是在虚拟机演示,因此唯一的方式就是进入虚拟机进行登录,而生产环境中服务器一般是放在机房的,因此也就只有去机房接上显示器,然后进行登录。
演示完成后,我们未来后续的演示,先通过虚拟机登录到系统,将配置修改回来,允许root远程登录。
注意:以上演示的是两台linux主机之间的ssh登录,直接使用的是系统自带的ssh命令即可。而如果是windows与linux之间的ssh登录则是借助各种ssh工具,如果主机禁止了root登录,任何远程ssh工具都无法登录。常见的ssh登录工具见前面系列文章第三篇“linux入门系列3--linux远程登陆工具”。
1.3 使用ssh证书登录此前的登录都是通过账号密码的形式登录,本节演示通过ssh证书进行登录。
1.3.1 Linux主机之间免密登录前边的演示中2台机器之间要ssh远程登录,需要先输入密码。但有时候需要linux主机能ssh免密登录,而无需输入账户的密码,比如一台机器上ssh到另外一台机器执行某些脚本,这个过程往往是通过shell脚本进行,而无需人工干预。因此在这种情况下,就需要设置机器之间的互信,而免密登录本质就是证书登录。
还是以前面的2台机器为例,假设需要从192.168.78.104(origin)免密登录到192.168.78.100(heimatengyun),那么origin就是客户端主机,而heimatengyun则是服务器远程主机。
(1)在客户端主机生成密钥对
通过系统自带的ssh-keygen命令生成
[root@origin ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): 按回车或设置密钥存储路径 Enter passphrase (empty for no passphrase): 按回车或设置密钥的密码 Enter same passphrase again: 按回车或设置密钥的密码 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: bc:94:4e:e1:82:7c:4a:96:ad:a3:38:c5:d6:47:ac:94 root@origin The key\'s randomart image is: +--[ RSA 2048]----+ | | | | | o . | | .E+oo o | | . o*o+ S | | +oo+.= . | | o +. o | |.. . . | |... | +-----------------+ [root@origin ~]# [root@origin ~]# ls .ssh/ id_rsa id_rsa.pub known_hosts注意,此过程需要按3次回车,不输入信息直接按回车则采用默认值。可以看到在当前用户根目录下的.ssh文件夹中生成了公钥(id_rsa.pub)和私钥文件(id_rsa)。
这样就生成了密钥对。
(2)公钥文件发送至远程主机
通过ssh-copy-id命令把客户端刚生成的公钥文件发送至远程主机
[root@origin ~]# ssh-copy-id 192.168.78.100 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.78.100\'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh \'192.168.78.100\'" and check to make sure that only the key(s) you wanted were added. [root@origin ~]#输入远程主机的密码后,就成功把公钥文件发送至远程主机。实际上就是将第一步中生产的id_rsa.pub公钥文件的内容写入到远程主机的.ssh/authorized_keys文件中,同时在自己的.ssh目录下生成known_hosts文件,里边记录的是远程主机的信息。可以自行查看2台主机的这2个文件对比一下就知道了。另外由于授权操作本质就是文件的操作,因此当不需要ssh无密登录时只需要删除.ssh目录下的文件即可。
经过上边操作后,此时就可以直接远程登录到主机了。
[root@origin ~]# ssh 192.168.78.100 Last login: Sun Jan 5 11:36:52 2020 from 192.168.78.1 [root@heimatengyun ~]#可以看到没有输入root的密码,直接就登录远程服务主机了。但此时远程主机heimatengyun依然可以远程通过账号密码登录。
如果在第一步中指定了证书的密钥,则在登录时需要输入证书的密码才能登录。注意是证书密码而不是用户的密码。
(3)设置远程主机,使其只允许密钥证书登录,拒绝口令登录方式