购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

既然可以在Windows上安装一个客户端软件(比如PuTTY)去登录远程的Linux,那么在Linux上是否也可以登录另一台Linux呢?当然可以,只是在Linux上也需要安装一个客户端软件。CentOS自带的客户端软件叫作openssh-clients。

要想检测Linux上是否已安装客户端软件,需要运行如下命令:

# ssh -V
OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018

如果已安装,则会显示OpenSSH的版本信息。如果没有显示类似的信息,请运行如下命令安装:

# yum install -y  openssh-clients

要完成本实验,还需要有一台Linux机器,你可以按照2.2节再安装一台CentOS。但阿铭觉得那样做太浪费时间,其实还有一个更好的方法——克隆虚拟机。

首先,关闭正在运行的CentOS,正确的关机命令是 shutdown -h now 或者 init 0 。然后在左侧对应的虚拟机名字上单击鼠标右键,选择“管理”,再选择“克隆”,如图3-5所示。

{%}

图3-5 克隆

此时会出现“克隆向导”界面。直接单击“下一步”按钮,再单击“下一步”按钮,会出现“克隆类型”对话框,这里采用默认值即可,即选择“创建链接克隆”,这种类型会节省空间,比较方便。继续单击“下一步”按钮,你可以设定克隆虚拟机的名称和保存的路径。接着单击“完成”和“关闭”按钮,最终完成CenOS 8的克隆。此时,不管是在左侧“我的电脑”下面还是在右侧“选项卡”,都多出来一个克隆后的CentOS 8虚拟机。

把两台CentOS 7全部启动。先登录克隆的虚拟机,输入命令 dhclient ,让这台新克隆的CentOS 8也自动获取一个IP地址。再运行 ip addr 命令,可以看到获取到的IP地址为192.168.72.129,使用2.3.2节的方法给这台CentOS 8也配置一个静态IP地址。

为了便于区分两台CentOS 8,下面阿铭教你如何设置主机名。我们不妨给第一台起个主机名为aminglinux-128,第二台为aminglinux-129。请在第一台CentOS 8上运行如下命令:

# hostnamectl  set-hostname  aminglinux-128

可以使用快捷键Ctrl+D退出当前终端,然后再登录一次,就会发现命令行左边的前缀有所变化了。使用同样的方法,将第二台CentOS 8的主机名设置为aminglinux-129。

使用前面的方法,通过PuTTY远程登录aminglinux-128,然后在这台机器上执行如下命令:

# ssh root@192.168.72.129    // 第一次登录对方机器,有一个提示
The authenticity of host '192.168.188.129 (192.168.72.129)' can't be established.
ECDSA key fingerprint is 26:e3:97:e7:bb:ae:17:33:ea:aa:0c:5f:37:0e:9e:fa.
Are you sure you want to continue connecting (yes/no)

这里我们输入yes,然后回车,又出现一个如下的警告,它的意思是保存了192.168.72.129这台机器的信息:

Warning: Permanently added '192.168.72.129' (ECDSA) to the list of known hosts.
root@192.168.72.129's password:

然后输入192.168.72.129的root密码后,成功登录aminglinux-129。

命令中符号 @ 前面的 root 表示要以远程机器哪个用户的身份登录。我们可以省略 root@ ,即写成 ssh 192.168.72.129 ,它也表示以root用户的身份登录。这个并不是固定的,取决于当前系统的当前用户是谁。我们可以使用如下命令查看当前用户:

# whoami
root

也可以写成:

# who am i
root     pts/1        2019-12-27 07:06 (192.168.72.128)

从这两个命令的显示结果可以看出它们的区别:一个是简单显示,一个是复杂显示。后者不仅可以显示当前用户名,还可以显示登录的终端、登录时间以及从哪里登录。

既然PuTTY支持使用密钥验证的方式登录Linux机器,那么Linux下的客户端软件也是支持的。下面请跟着阿铭一步一步来操作。

  1. 客户端生成密钥对

    假如aminglinux-128为客户端(以下简称128),aminglinux-129为要登录的机器(以下简称129)。首先,把刚刚登录的129退出来,直接使用Ctrl+D快捷键即可。然后在128上执行如下命令:

    #  ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):

    这个命令用来生成密钥对。首先,它让我们定义私钥的存放路径,默认路径为 /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:
    57:15:10:d6:8a:ed:79:83:0b:fc:d7:21:52:5b:ba:83 root@aminglinux-128
    The key's randomart image is:
    +--[ RSA 2048]----+
    |            ++o. |
    |           . ..  |
    |           o..   |
    |          ..o. . |
    |        S....o+  |
    |         .o.++o. |
    |           ooooo.|
    |           Eoo. .|
    |             ..  |
    +-----------------+

    最终生成了密钥对,你可以在 /root/.ssh/ 目录下找到公钥(id_rsa.pub)和私钥(id_rsa)。

  2. 把公钥复制到要登录的机器上

    首先,我们查看128上公钥的内容,此时运行如下命令:

    # cat /root/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiAUXQihX9pa1oxml6xRjZhjTRCU+QMHUGXU34Q6gBeK/8Qm0hUqPfyASXbV2y6hKH4MHfX4zQcpnkeTgyeIFuKAxoEX98mx8r4owB7X490CH+H8JCRsM9FYlAsbH+kvdIa+sNTMqD5jEY5dh+gNINDDNJiw250cYG9Pe8Y+5slazPYrC0tjWz+AnXhJ1//r9z077rxEMJ1jHZdEn62hIou46i8xny+znJScSeW0uJHTgeX5EbXrArgSUOXyubtsGrov83dSUa39Kfyk4HvXU0azYI8S3h6ZxUOed0dYmic4EMd5VxYPnrgNEgTCRlP3hx/sOCCr0HSWtv+MvREkGd root@aminglinux-128

    将这些字符串全部复制,然后粘贴到129上的文件 /root/.ssh/authorized_keys里。若之前已经创建过这个文件,并且已经粘贴过PuTTY的公钥,则需要另起一行粘贴128的公钥。在129上执行如下命令:

    # vi /root/.ssh/authorized_keys

    如果有内容,可以按字母键G把光标定位到文件末尾,然后输入o进入编辑模式(这里使用的命令和之前有所不同,请先跟着阿铭操作)。单击鼠标右键即可粘贴128的公钥。然后按Esc键,输入:wq,再回车。如果你之前并没有设置PuTTY的公钥,请继续执行以下命令:

    # chmod 600 /root/.ssh/authorized_keys

  3. 登录Linux

    在128上执行如下命令:

    # ssh 192.168.72.129

    此时不再提示我们输入密码,就可以直接登录到129了。这样就可以实现Linux通过密钥验证的方式登录Linux。如果你在生成密钥对时设置了密码,那么这里也会提示你输入密钥密码。为了方便跨机器执行命令,这里我们特意不设置密钥的密码(后面会用到)。

  4. 使用ssh-copy-id

    Linux系统里还有一种更方便实现密钥认证的方法。这次阿铭要让129通过密钥认证登录128。在129上执行如下命令:

    # ssh-keygen
    # ssh-copy-id  root@192.168.72.128

    它会提示让我们输入128的root密码,只要输入对了对方服务器的密码就完成了密钥认证。再次尝试ssh登录128,此时就不再提示我们输入密码,可以直接登录到129了。 9Sna2pZ13wEIMQJddhW+yGf8v6J8Z2lX7/WlZBxoslMhC4b4n35wO8O+6fhdospv

点击中间区域
呼出菜单
上一章
目录
下一章
×