在第2章中,我们已经给CentOS设置了IP地址(192.168.72.128),并且这个IP地址是静态的,即使你的VMware重启过,它也不会变。设置IP地址的目的除了要使用yum工具外,另一个就是远程连接Linux操作系统了。
打开PuTTY后,请按照如下步骤连接远程Linux服务器。
填写远程Linux的基本信息
填写Linux基本信息的对话框如图3-1所示,其中Host Name(or IP address)这一栏填写服务器IP,即192.168.72.128,Port和Connection type这两栏采用默认设置即可。Saved Sessions这一栏自定义一个名字,主要用来区分主机,因为将来你的主机会很多,写个简单的名字既方便记忆又能快速查找。
图3-1 填写基本信息
定义字符集
计算机的字符集是最麻烦的,尤其是Linux,搞不好就会乱码。阿铭在第2章中教你安装CentOS时已经安装了中文语言,所以安装好的系统支持中文。在PuTTY这里也要设置支持中文,单击左侧的Window→Translation,查看右侧的Character set translation,选择UTF-8,如图3-2所示。再单击左侧的Session,然后单击右侧的Save按钮。
图3-2 定义字符集
远程连接你的Linux
保存Session后,单击最下方的Open按钮。初次登录时,都会弹出一个友情提示,它的意思是要打开的Linux还未在本机登记,问我们是否要信任这个Linux。如果是可信任的,则单击“是”按钮在该主机登记;否则单击“否”按钮或者“取消”按钮。这里我们单击“是”按钮,弹出如下登录提示:
login as: root
root@192.168.72.128's password:
Last login: Thu Dec 26 08:13:39 2019
输入用户名和密码后,就可以登录Linux系统。登录后,会提示至目前最后一次登录系统的时间和地点。然后,我们就可以在PuTTY里面进行操作了,这和在VMware终端上操作没有区别。而且它还有一个好处,就是可以随意复制、粘贴。之前在终端的窗口里,我们没有办法复制内容,更不能粘贴文本信息。使用PuTTY,我们还可以通过鼠标滚轮翻查之前显示的历史信息。
SSH服务支持一种安全认证机制,即密钥认证。所谓密钥认证,实际上是使用一对加密的字符串:其中一个称为公钥(public key),用于加密,任何人都可以看到其内容;另一个称为私钥(private key),用于解密,只有拥有者才能看到其内容。通过公钥加密过的密文,使用私钥可以轻松解密,但根据公钥来猜测私钥却十分困难。SSH的密钥认证就是使用了这一特性。
服务器和客户端都各自拥有自己的公钥和私钥,PuTTY可以使用密钥认证登录Linux,具体的操作步骤如下。
生成密钥对
关于密钥对的工作原理,如果感兴趣,可以到网上查一查,阿铭在此不过多介绍。在“开始”菜单中找到PuTTYgen,单击打开它,如图3-3所示。然后单击Generate按钮,这样就开始生成密钥了,请来回拨动鼠标,这样有助于快速生成密钥对,大约几秒钟就完成了。图3-3中的Key comment可以保持不变,也可以自定义,它是对该密钥的简单介绍。Key passphrase用于给你的密钥设置密码,此项可以留空,但阿铭建议你设置一个,这样安全一些。Confirm passphrase需要再输入一遍刚刚设置的密码。
图3-3 生成密钥对
保存私钥
单击Save private key按钮,选择一个存放路径并定义名称,单击“保存”按钮。这个就是私钥,请把它保存到一个比较安全的地方,谨防丢失或被其他人看到。
复制公钥到Linux
返回刚才生成密钥对的窗口,在Key的下方有一个长字符串,这个字符串就是公钥的内容。把整个公钥字符串复制下来,粘贴到Linux的文件中。下面请跟着阿铭一起来操作,运行如下命令:
# mkdir /root/.ssh // 创建/root/.ssh目录,因为这个目录默认是不存在的
# chmod 700 /root/.ssh // 更改这个目录的权限
# vi /root/.ssh/authorized_keys // 把公钥内容粘贴到文件/root/.ssh/authorized_keys里
关于
mkdir
和
chmod
这两个命令,阿铭会分别在4.1.2节和4.6.3节中详细介绍。在
vi
命令之后直接回车,输入
i
进入编辑模式,然后单击鼠标右键就可以粘贴了,这是PuTTY工具非常方便的一个功能。粘贴后,按Esc键,然后输入:wq并回车,保存并退出该文件。
关闭SELinux
关于SELinux,在第2章中我们也提到过,它是CentOS的一种安全机制,它的存在虽然让Linux系统安全了很多,但也产生了不少麻烦。这里如果不关闭SELinux,使用密钥登录时会提示
Server refused our key
,从而导致不能成功。需要运行如下命令来关闭SELinux:
# setenforce 0
这只是暂时关闭,下次重启Linux后,SELinux还会开启。若要永久关闭,必须运行如下命令:
# vi /etc/selinux/config
按回车后,把光标移动到
SELINUX=enforcing
这一行,输入
i
进入编辑模式,修改为
SELINUX= disabled
。按Esc键,然后输入:wq并回车,最后重启系统。
设置PuTTY通过密钥登录
当系统重新启动后,打开PuTTY软件,在右侧Saved Sessions下面找到刚刚保存的session,单击选中它,然后再单击右侧的Load按钮。在左下方单击SSH前面的+,然后选择Auth,查看右侧Private key file for authentication下面的长条框,目前为空。单击Browse按钮,找到我们刚刚保存好的私钥,单击“打开”按钮。此时这个长条框里就有了私钥的地址(当然,你也可以自行编辑这个路径),如图3-4所示。最后,再回到左侧,单击最上面的Session,再单击右侧的Save按钮。
图3-4 设置密钥
使用密钥验证登录Linux
保存好Session后,单击右下方的Open按钮,会出现登录界面,此时你会发现,登录提示内容和原来的有所不同,如下所示:
login as: root
Authenticating with public key "rsa-key-20191227"
Passphrase for key "rsa-key-20191227":
Last login: Fri Dec 27 06:42:50 2019 from 192.168.72.1
这里不再是输入root密码,而是需要输入密钥的密码。如果先前生成密钥对时你没有设置密码,输入root后会直接登录系统。有很多朋友在做密钥认证的时候会失败,但只要注意这几点就一定可以成功:
假如你还有一台机器需要使用密钥验证登录Linux,你学会如何设置了吗?PuTTY的设置方法是一样的,使用同样的私钥,不需要你再次生成密钥对了。另外,把192.168.72.128上的文件/root/.ssh/authorized_keys复制一份到另一台机器就可以了。请注意,这个文件的名字是固定的。
在本例中,阿铭教大家的是直接使用密钥登录root用户,但在工作中很多朋友登录的是普通用户,而不是root。那普通用户的密钥认证如何设置呢?原理肯定是一样的,同样要先有密钥对,然后把公钥放到服务器上,不过不是在/root/.ssh目录下面了,而是普通用户家目录下面的.ssh目录下。那普通用户家目录在哪里?第5章讲到用户管理时,阿铭会详细介绍,在这阿铭举一个例子,比如你登录的普通用户为aming,那么aming用户的家目录为/home/aming。还有一点大家要注意,在Linux机器上所做的操作(如创建.ssh目录)也必须以aming用户身份操作才可以。