快捷搜索:  汽车  科技

linux操作系统第6章(第4章远程登录Linux系统)

linux操作系统第6章(第4章远程登录Linux系统)前些年网上曾报道过,某个中文版的PuTTY被别有用心的黑客动了手脚,给植了后门,像这种SSH客户端软件被植入后门,后果会非常严重。所以阿铭提醒各位小伙伴,以后不管你下载什么软件,尽量去该软件的官方站点下载,如果不知道地址,可以到百度或者bing搜一下。MobaXterm的官方下载地址为https://mobaxterm.mobatek.net/download.html。打开下载页面后,我们可以看到有Home Edition和Professional Edition两个版本,其中Home Edition为免费版,但是最多只支持12个session,对于我们学习来说足够了。4.1.1 下载MobaXterm如果你安装的是Windows操作系统,则需要额外安装一个Linux远程登录的终端软件。目前比较常见的终端登录软件有MobaXterm、Xshell、SecureCRT、PuTTY等。很多朋

提醒:本文为合集文章,后续会持续更新!

关注我,每日提升!

Linux主要应用于服务器领域,而服务器不可能像PC机那样放在办公室,它们是放在IDC机房的,所以阿铭平时登录Linux系统都是通过网络远程登录的。

Linux系统通过SSHD服务实现远程登录功能。这个SSHD服务默认开启了22端口,当我们安装完系统时,该服务已经安装,并且是开机启动的。所以,我们不需要额外配置什么就能直接远程登录Linux系统。SSHD服务的配置文件为/etc/SSH/sshd_config,你可以根据需求修改这个配置文件,比如我们可以更改启动端口为11587,但这个数字不要超过65535。

如果你安装的是Windows操作系统,则需要额外安装一个Linux远程登录的终端软件。目前比较常见的终端登录软件有MobaXterm、Xshell、SecureCRT、PuTTY等。很多朋友喜欢用SecureCRT,因为它的功能非常强大,而阿铭喜欢用PuTTY,因为它小巧且显示的颜色漂亮。最近阿铭也在使用Moba Xterm,也非常不错,值得大家研究一下。但不管你使用哪一个客户端软件,最终的目的只有一个 —— 远程登录到Linux服务器上。下面章节阿铭会带着大家学习并使用MobaXterm工具。

4.1 安装MobaXterm

MobaXterm有免费版和收费版,其中免费版有session数量限制,如果你所管理的服务器数量很大,建议购买收费版。MobaXterm内置了SFTP、FTP、Telnet、VNC客户端,非常实用。其官网地址为:https://mobaxterm.mobatek.net/。

4.1.1 下载MobaXterm

前些年网上曾报道过,某个中文版的PuTTY被别有用心的黑客动了手脚,给植了后门,像这种SSH客户端软件被植入后门,后果会非常严重。所以阿铭提醒各位小伙伴,以后不管你下载什么软件,尽量去该软件的官方站点下载,如果不知道地址,可以到百度或者bing搜一下。MobaXterm的官方下载地址为https://mobaxterm.mobatek.net/download.html。打开下载页面后,我们可以看到有Home Edition和Professional Edition两个版本,其中Home Edition为免费版,但是最多只支持12个session,对于我们学习来说足够了。

linux操作系统第6章(第4章远程登录Linux系统)(1)

点击Download now按钮进入下载页,此时可以看到它又分成了Portable edition和Installer edtion,其中Portable edition为免安装版本,建议大家下载个Installer editon。

linux操作系统第6章(第4章远程登录Linux系统)(2)

4.1.2 安装

下载MobaXterm的安装包后,双击MobaXterm_Installer_v22.1.zip,然后再双击MobaXterm_installer_22.1.msi进入安装界面。

linux操作系统第6章(第4章远程登录Linux系统)(3)

linux操作系统第6章(第4章远程登录Linux系统)(4)

直接单击Next按钮,勾选I accept the terms in the License Agreement,继续点Next按钮和Install按钮即可完成安装。

4.2 远程登录

在上一章中,我们已经给Rocky设置了IP地址(192.168.195.101),并且这个IP地址是静态的,即使你的VMware重启过,它也不会变。设置IP地址的目的除了要使用yum工具外,另一个作用就是远程连接Linux操作系统了。

4.2.1 使用密码直接登录

打开MobaXterm后,请按照如下步骤连接远程Linux服务器。

1) 创建session

填写Linux基本信息的对话框如下图所示,

linux操作系统第6章(第4章远程登录Linux系统)(5)

其中Host Name(or IP address)这一栏填写服务器IP为192.168.195.101,Specify Username用来定义要登录的用户名,因为我们要登录root用户,所以这里写root,Port这栏采用默认设置即可。Bootmark settings用来定义session的名字,这里你可以自定义,主要用来区分主机,因为将来你的主机会很多,写个简单的名字既方便记忆又能快速查找。

点确认后,即可进入到登录界面,此时需要输入密码

linux操作系统第6章(第4章远程登录Linux系统)(6)

输入密码后回车,弹出是否需要保存密码的提示,如果想要保存密码,就点Yes。

linux操作系统第6章(第4章远程登录Linux系统)(7)

然后继续定义Master Password

linux操作系统第6章(第4章远程登录Linux系统)(8)

然后再点击OK,终于进入Linux系统了。

linux操作系统第6章(第4章远程登录Linux系统)(9)

4.2.2 使用密钥认证

SSH服务支持一种安全认证机制,即密钥认证。所谓密钥认证,实际上是使用一对加密的字符串:其中一个称为公钥(public key),用于加密,任何人都可以看到其内容;另一个称为私钥(private key),用于解密,只有拥有者才能看到其内容。通过公钥加密过的密文,使用私钥可以轻松解密,但根据公钥来猜测私钥却十分困难。SSH的密钥认证就是使用了这一特性。

服务器和客户端都各自拥有自己的公钥和私钥,MobaXterm可以使用密钥认证登录Linux,具体的操作步骤如下。

1)生成密钥对

在菜单中找到Tools,然后选择MobaKeyGen单击。

linux操作系统第6章(第4章远程登录Linux系统)(10)

单击Generate,注意,这里要来回动一动鼠标,否则生成密钥会很慢。

linux操作系统第6章(第4章远程登录Linux系统)(11)

其中红框里面的内容就是公钥,这部分内容可以直接用鼠标选中,然后按Ctrl c复制,等会要粘贴到Linux里面去。

linux操作系统第6章(第4章远程登录Linux系统)(12)

你还可以定义密钥的密码,如下图红框所示,也可以留空,即密钥不设置密码。

linux操作系统第6章(第4章远程登录Linux系统)(13)

2)保存私钥

点击Save Private Key保存私钥,请把它保存到一个比较安全的地方,谨防丢失或被其他人看到。然后就可以关闭该窗口啦。

3)复制公钥到Linux

下面我们把刚复制的公钥粘贴到Linux的文件中。下面请跟着阿铭一起来操作,运行如下命令:

# mkdir /root/.ssh //创建/root/.ssh目录,因为这个目录默认是不存在的 # chmod 700 /root/.ssh //更改这个目录的权限 # vi /root/.ssh/authorized_keys//把公钥内容粘贴到文件/root/.ssh/authorized_keys里

关于mkdir和chmod这两个命令,阿铭会分别在下一章节中详细介绍。在vi命令之后直接回车,输入i进入编辑模式,然后单击鼠标右键,它会弹出一个提示框,我们选择下面的选项,意思是点击右键直接粘贴,这是MobaXterm工具非常方便的一个功能。

linux操作系统第6章(第4章远程登录Linux系统)(14)

粘贴后,按Esc键,然后输入:wq并回车,保存并退出该文件。

4)关闭SELinux

关于SELinux,上一章我们也提到过,它是Rocky的一种安全机制,它的存在虽然让Linux系统安全了很多,但也产生了不少麻烦。这里如果不关闭SELinux,使用密钥登录会提示 Server refused our key,从而导致不能成功。需要运行如下命令来关闭SELinux:

# setenforce 0

这只是暂时关闭,下次重启Linux后,SELinux还会开启。若要永久关闭,必须运行如下命令:

# vi /etc/selinux/config

回车后,把光标移动到SELINUX=enforcing这一行,输入i进入编辑模式,修改为SELINUX= disabled。按Esc键,然后输入:wq并回车,最后重启系统。

5)设置通过密钥登录

找到刚才保存的session,右键单击,选择Edit Session。

linux操作系统第6章(第4章远程登录Linux系统)(15)

单击Advanced SSH settings,找到下面的Use private key勾选上,然后选择刚刚保存的私钥文件

linux操作系统第6章(第4章远程登录Linux系统)(16)

6)使用密钥验证登录Linux

点击ok后,双击刚才的session,就可以自动登录了,但是这还不能确定是否使用了密钥,毕竟我们刚才的密码也被保存到了MobaXterm里,也不用输入密码就能登录,你可以通过下面的命令查看日志:

# journalctl -u sshd

如果有看到Accepted publickey for root字眼就说明密钥认证成功了。如果先前生成密钥时你有设置密码,则在登录时需要输入密钥密码才可以登录系统。有很多朋友在做密钥认证的时候会失败,只要你注意这几点就一定可以成功:

  • /root/.ssh目录权限为700;
  • SELinux要关闭;
  • /root/.ssh/authorized_keys文件名要写对;
  • 文件内容要粘贴对。

假如你还有一台机器要使用密钥验证登录Linux,你学会如何设置了吗?MobaXterm的设置方法是一样的,使用同样的私钥,不需要你再次生成密钥对了。另外,把192.168.195.101上的文件/root/.ssh/authorized_keys复制一份到另一台机器就可以了。请注意,这个文件的名字是固定的。

在本例中,阿铭教大家的是直接使用密钥登录root用户,但在工作中很多朋友登录的是普通用户,而不是root。那普通用户的密钥认证如何设置呢?原理肯定是一样的,同样要先有密钥对,然后把公钥放到服务器上,不过并不是/root/.ssh目录下面了,而是普通用户家目录下面的.ssh目录下。那普通用户家目录在哪里?第6章讲到用户管理时,阿铭会详细介绍,在这里阿铭举一个例子,比如你登录的普通用户为aming,那么aming用户的家目录为/home/aming。还有一点大家要注意,在Linux机器上所做的操作(如创建.ssh目录)也必须以aming用户身份操作才可以。

4.3 两台Linux相互登录

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

检测是否安装,需要运行如下命令:

# ssh -V OpenSSH_8.0p1 OpenSSL 1.1.1kFIPS 25 Mar 2021

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

# yum install -yopenssh-clients

4.3.1 克隆Rocky

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

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

linux操作系统第6章(第4章远程登录Linux系统)(17)

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

把两台Rocky8全部启动。先登录克隆的虚拟机,使用3.2章节的方法给这台Rocky 8也配置一个静态IP地址。

为了容易区分两台Rocky 8,下面阿铭教你设置主机名。我们不妨给第一台起个名字aminglinux-01,第二台叫作aminglinux-02。请在第一台Rocky 8上运行如下命令:

# hostnamectl set-hostname aminglinux-01

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

4.3.2 使用密码登录

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

# ssh root@192.168.195.102 //第一次登录对方机器,有一个提示 The authenticity of host '192.168.195.102(192.168.195.102)' 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.195.102这台机器的信息:

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

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

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

# whoami root

也可以写成:

# who am i root pts/1 2022-09-17 07:06 (192.168.195.101)

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

4.3.3 使用密钥登录

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

1)客户端生成密钥对

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

# 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-01 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)把公钥复制到要登录的机器上

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

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

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

# vi /root/.ssh/authorized_keys

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

# chmod 600 /root/.ssh/authorized_keys

3)登录Linux

在01上执行如下命令:

# ssh 192.168.195.102

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

4)使用ssh-copy-id

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

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

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

猜您喜欢: