从0开始学习Linux——远程连接工具

往期目录:

从0开始学习Linux------简介&安装

从0开始学习Linux------搭建属于自己的Linux虚拟机

从0开始学习Linux------文本编辑器

从0开始学习Linux------Yum工具

Linux 远程连接工具是指用于从远程计算机连接到 Linux 系统并进行操作的各种工具。它们可以帮助管理员或用户管理远程 Linux 服务器、执行命令、文件传输、图形界面应用等。

那么现在我们可以思考一个问题:我们为什么要用远程连接工具去操作Linux系统?

首先Linux 系统通常作为服务器在数据中心或云平台运行,许多情况下,这些服务器可能位于远程位置。因此,远程连接工具对于系统管理员来说至关重要。管理员可以通过这些工具远程登录到服务器上进行日常的系统管理和故障排除,而无需物理访问服务器。

其次在企业和开发环境中,许多人需要对多个 Linux 系统进行管理。通过远程连接工具,系统管理员和开发人员可以高效地访问并处理多个主机,减少了往返物理服务器的时间和精力。

同时Linux 服务器通常部署在对外开放的环境中,安全性尤为重要。远程连接工具(尤其是 SSH)提供了加密、身份验证等安全机制,确保数据和系统的安全。

我们前面的教程中在安装Linux时选择的Centos7版本,并且选择的是最小安装即没有图形化桌面,只能通过命令去操作,可能大家也发现了一个问题,那就是命令需要我们一个个去手敲,在很多场景中可能会比较麻烦,因此一些图形化远程连接工具可以帮我们高效的去操作Linux系统中的命令。

同样在Linux系统出现故障时,管理员可能无法直接访问服务器(如服务器挂起、网络中断等情况)。此时,远程连接工具尤其重要。

前面的教程中我们是将Linux系统安装在VM虚拟机上面的,因此有时候我们要将我们的项目部署到系统上或者传输文件就比较麻烦,因此我们就有必要借助远程连接工具去帮助我们完成任务。

当然若我们的Linux系统在公司的电脑上运行,如果我们想要在家中去操作,也是可以借助远程工具的。

现在我们已经了解了远程连接工具的必要性,下面我们来了解一下常见的远程连接工具。

一、SSH (Secure Shell)

SSH(Secure Shell)是一种用于在不安全网络上进行加密通信的协议,常用于远程登录和执行命令,提供了一种安全的方式来管理远程计算机。SSH 最初由 Tatu Ylönen 于 1995 年设计并发布,它主要取代了早期的不安全协议(如 Telnet、rlogin 和 FTP),提供了更高的安全性和数据保密性。

SSH 协议通过使用加密和认证技术,确保远程登录和数据传输的安全性。SSH 使用 对称加密、非对称加密(公钥加密)和 消息认证码(MAC) 来实现以下目标:

  • 身份验证:确保通信的双方身份合法。
  • 加密通信:防止数据在传输过程中被窃听。
  • 数据完整性:确保数据未被篡改。

下面我们来探究一下SSH的工作流程:

  • 客户端发起连接请求:SSH 客户端(例如ssh命令)通过 TCP 端口 22 向远程服务器发送连接请求。
  • 密钥交换:在连接建立时,双方交换加密密钥,客户端和服务器之间会协商出对称加密密钥。通过这种方式,通信内容将被加密,防止第三方窃听。
  • 身份验证:服务器会要求客户端进行身份验证,通常通过用户名和密码、SSH 密钥对(公钥/私钥)或其他认证方式(如 Kerberos)进行验证。
  • 建立加密通信:一旦身份验证成功,客户端与服务器之间的通信将通过加密通道进行,所有的命令和数据都将被保护在加密层中。

SSH 协议有多个组成部分,每个部分负责不同的功能:

  • SSH-Transport:负责加密和密钥交换,确保数据的机密性和完整性。
  • SSH-User-Authentication:负责客户端的身份验证,确认连接的用户是否合法。
  • SSH-Connection:负责传输用户的数据和命令。

1.1 连接方式

上述我们简单了解了SSH协议,下面我们就来了解一下SSH的连接方式。

1.1.1 密码验证

密码验证是最常见的一种SSH连接方式。在这种方式下,用户需要输入用户名和密码来进行身份验证:

  • 用户通过SSH客户端(如SSH命令、PuTTY等)连接到远程服务器。
  • 服务器要求客户端提供用户名和密码。
  • 客户端将密码发送给服务器,服务器根据存储的密码进行比对,如果匹配,则允许连接。

接下来我们就来实际操作一番,首先我们在我们的电脑上打开命令行工具,然后输入ssh命令以及要登录的Linux系统所在机器的ip地址、登录用户名等。

注意:上述我们在连接时没有写明端口号,那是因为默认端口是22,因此就省略不写了,当然我们也可以去更改服务器的端口号,然后在使用ssh连接的时候使用"-p"命令指明端口号就行了,例如:

ssh root@192.168.33.131 -p 233。

补充:如何修改端口号

如果我们想要把我们Linux系统所在的机器的默认端口号22进行修改,那么我们可以去编辑

/etc/ssh/sshd_config文件,然后将里面的port=22修改为自己的值就可以了。

我们修改好port以后需要重启ssh服务,便于ssh服务生效。

systemctl restart sshd

注意:如果机器防火墙是开启的,那么我们就需要在防火墙里面开启22端口号。

1.1.2 密钥验证

这种方式通过公钥和私钥对进行身份验证。相较于密码验证,基于密钥的验证更加安全,且避免了频繁输入密码的麻烦。

首先先打开我们的电脑的命令行例如我的电脑是windows那么就打开cmd或者powershell,打开以后执行命令:

ssh-keygen

我们在执行上述命令的时候会询问公钥和密钥的保存路径,如果没有特殊需求我们直接回车就行。

上述命令执行完成以后默认会在C:\Users\用户名\.ssh文件夹里面生成一个rsa私钥即id_rsa.和一个公钥即id_rsa.pub.

接下来我们需要将我们刚才生成的公钥保存到Linux系统所在的计算机上。

对于公钥我们需要保存到~/.ssh/authorized_keys文件里面。

我们先来看下有没有该文件。

cat ~/.ssh/authorized_keys

我们运行这条命令后发现不存在该文件,因此我们要先去创建该文件。

我们先创建.ssh文件夹。

mkdir -p ~/.ssh

注意:上述命令种的-p表示创建文件夹的时候没有父级目录的时候就会创建父级目录。

创建好该文件夹以后我们需要赋予该文件夹一定的权限。

chmod 700 ~/.ssh

接下来我们就可以使用文本编辑工具去保存公钥。

我们先去电脑上保存在本地的id_rea.pub.里面的内容给复制下来。

接着我们先使用文本编辑工具在linux系统里面创建文件。

文本编辑工具 ~/.ssh/authorized_keys

最后将复制的公钥保存到~/.ssh/authorized_keys文件里面,并且执行下述命令给该文件赋予一定的权限。

chmod 600 ~/.ssh/authorized_keys

上述工作完成以后我们就可以在我们的电脑上使用ssh和生成的密钥去连接Linux系统。

注意:上述连接操作种的rsa密钥路径和ip地址要写自己的,那么如何去确定自己linux系统的ip地址呢?我们可以使用下述命令进行查询。

上述操作完成以后就完成了ssh的密钥连接linux系统。是不是很简单。

1.1.3 证书认证

证书验证是一种基于公钥的身份验证方式,但与传统的公钥验证不同,它引入了证书的概念。用户的公钥会被数字签名,生成一个证书,作为身份验证的一部分。它通常用于大规模部署中,提供更高的灵活性和管理性。

证书认证的工作原理如下所示:

  • 用户首先生成一对密钥。
  • 使用私钥向CA(证书授权机构)申请证书,证书由CA用其私钥签名。
  • 客户端将证书发送给服务器,服务器使用CA的公钥验证证书的合法性。
  • 如果证书有效且签名匹配,服务器接受连接。

证书认证方式在这里就先省略。

1.1.4 代理形式认证

SSH代理认证通常用于通过一个中间服务器(跳板机)来访问目标服务器。在这种情况下,客户端和目标服务器之间的连接是间接的,通过SSH代理进行中转。

代理形式认证的工作原理如下所示:

  • 用户在本地使用SSH客户端连接到代理服务器(通常称为跳板机)。
  • 然后,跳板机会继续将连接转发到目标服务器。
  • 用户的身份验证会通过跳板机进行,如果跳板机验证成功,才能继续与目标服务器建立连接。

代理形式认证方式在这里也先省略。

对于上述所说的四种认证方式总结如下所示:

  • 密码验证:简单但不够安全,适用于低安全需求的环境。
  • 基于密钥的身份验证:更安全,推荐在生产环境中使用。
  • 基于证书的身份验证:适合大规模和高安全需求的环境,管理较为复杂。
  • 基于代理的身份验证:用于通过跳板机间接访问目标服务器,提高安全性,但配置较为复杂。

二、XShell&XFTP

XShell和XFTP是由NetSarang公司开发的一组流行的远程连接工具。它们主要用于远程管理Linux/Unix系统和进行文件传输。它们具有友好的图形界面,并提供了强大的功能,是Linux/Unix系统管理员和开发者日常使用的常用工具

2.1 XShell

XShell是一款功能强大的终端模拟器,允许用户通过SSH、SFTP、TELNET等协议远程连接到Linux/Unix服务器,执行命令,管理服务器。它类似于PuTTY,但功能更加丰富且界面友好。

2.1.1 特点

  • SSH支持: XShell支持SSH1、SSH2等安全协议,可以安全地远程连接到Linux服务器。
  • 多标签: XShell支持多标签功能,可以同时打开多个远程会话,方便在多个会话之间切换。
  • 动态端口转发: 可以使用XShell进行端口转发,实现不同网络环境中的应用访问。
  • 脚本支持: XShell支持脚本编写,可以自动化常见操作,如定时执行命令等。
  • 自定义键盘映射: 用户可以设置自己的快捷键,提升操作效率。
  • 代理支持: 支持通过代理(SOCKS、HTTP)连接到远程服务器,适用于需要通过防火墙访问服务器的场景。
  • 安全性: 支持公钥认证、密钥管理、SSL加密,确保连接的安全性。

2.1.2 安装

首先我们先要去下载XShell安装包,对于安装包的下载我们可以去官网进行下载。

官网:XSHELL - The Industry's Most Powerful SSH Client

XShell软件是要收费的,但是我们可以使用它的免费版。

我们进入下载页面(Xshell 下载 - NetSarang Website)后就有一个免费授权入口,点击进去。

点进去后就可以看到XSHELL和XFTP的免费版的下载按钮,点击下载即可。

对于该软件的安装很简单,大家可以自行安装,只是记得在安装的时候更改安装路径。

完了以后会在桌面上生成一个桌面快捷方式,我们去运行它。

点击进去后会有一个免费许可,我们可以不管,点击后来按钮或者关闭按钮都可以。

进入软件以后会有一个弹框让我们选择会话,如果有的话我们可以直接选择,由于我们是第一次使用那么我们就需要新建一个当前机器和Linux系统所在机器的会话。

点击新建按钮后便进入到会话配置弹框。

在该弹框里面可以选择我们想要使用的连接方式,这里默认的连接方式是SSH协议,后面我们只需要根据提示输入对应的信息即可。

会话创建好以后选种它然后点击连接按钮进行连接到Linux系统操作。

点击连接按钮以后需要我们保存密钥和输入账号和密码。

上述操作完成以后就可以连接到我们的Linux系统了。

在这里我们建议每次操作Linux系统的时候都可以使用XShell去远程连接Linux,因为这样我们在执行命令的时候可以直接粘贴复制了。

2.2 XFTP

XFTP是XShell的姊妹工具,主要用于通过SFTP协议(SSH File Transfer Protocol)或FTP协议传输文件。它与XShell紧密集成,用户可以在XShell中直接启动XFTP进行文件上传、下载、同步等操作。

2.2.1 特点

  • SFTP支持: XFTP支持基于SSH的SFTP协议,可以加密传输文件,提高文件传输的安全性。
  • FTP和FTPS支持: 除了SFTP,XFTP还支持FTP和FTPS(加密的FTP)协议,适应更多的传输需求。
  • 多标签界面: XFTP支持多标签,可以同时管理多个文件传输任务,提升工作效率。
  • 文件同步: 支持双向文件同步,可以将本地和远程的文件夹进行对比和同步,方便备份和更新文件。
  • 拖放支持: 可以通过拖放方式在本地和远程文件之间进行传输,操作简单直观。
  • 高性能: 支持断点续传和批量传输功能,提高了大文件传输的效率和稳定性。

2.2.2 安装

XFTP的安装和XSHell安装是一样的,只是选择产品的时候选择XFTP就好了。

安装完成以后我们就可以去使用XFTP了,XFTP的使用方式和XShell使用方式一样。

进入XFTP页面我们就可以实现在电脑和Linux所在电脑进行文件互相传输,并且XFTP支持拖拽的形式进行文件传输,同时在XFTP种也可以直接通过鼠标等去操作Linux系统里面的文件。

注意:XShell和XFTP虽然是两个独立的工具,但它们之间有很好的集成。你可以在XShell中打开XFTP进行文件传输操作,免去频繁切换窗口的麻烦,在XShell的远程终端会话中,右键点击命令行窗口,选择"使用XFTP传输文件,也可以通过XShell的菜单栏进入XFTP,直接开始文件操作。

当然对于Linux系统的远程连接还有很多方式例如VNC、FTP、Telnet等,那么我们可以去选择一种我们所熟悉的方式去操作。

补充:FTP协议

FTP(File Transfer Protocol)和SSH(Secure Shell)都是常见的网络协议,广泛用于计算机网络中的文件传输和远程控制。

FTP是用于在计算机之间传输文件的一种标准网络协议。它通过客户端和服务器之间的请求与响应来实现文件的上传和下载。FTP协议早在1971年就被定义,并且在Internet上被广泛应用,特别是在文件共享和网站管理中。

1、工作原理

FTP的工作原理基于客户端/服务器模式,通常由两部分组成:

  • 控制连接(Command Connection):用于发送命令和接收响应。该连接通常使用TCP协议,默认端口为21。
  • 数据连接(Data Connection):用于传输实际的文件数据。数据连接可以是主动模式(Active Mode)或被动模式(Passive Mode),并使用不同的端口。

注意:FTP在传输文件的时候是不安全的即FTP本身并不具备加密功能,因此传输过程中,所有的数据(包括文件内容和用户名、密码)都是明文的,容易被第三方截获。为了解决这个问题,出现了安全版本的FTP,例如:

  • FTPS (FTP Secure):通过SSL/TLS协议对FTP的通信进行加密,保障传输的安全性。
  • SFTP (SSH File Transfer Protocol):尽管名字与FTP相似,但实际上是基于SSH协议实现的文件传输协议,具有更高的安全性。

2、文件传输方式

FTP支持两种数据传输模式:

  • ASCII模式:用于传输文本文件时,自动进行换行符转换(不同操作系统有不同的换行符,例如Windows使用\r\n,Unix使用\n)。
  • Binary模式:用于传输二进制文件(如图片、视频等),不做任何转换。

3、用途

  • 网站文件管理:很多网站管理员通过FTP协议上传和下载网站内容。
  • 数据备份:可以将大量的文件通过FTP上传到远程服务器作为备份。
  • 文件共享:FTP适合大文件的上传和下载,尤其是对一些不涉及加密的内部网络使用。

本次教程内容到此为止,更多内容将在后续教程中展示出来。

相关推荐
滴水之功2 分钟前
VMware OpenWrt怎么桥接模式联网
linux·openwrt
ldinvicible21 分钟前
How to run Flutter on an Embedded Device
linux
OopspoO29 分钟前
qcow2镜像大小压缩
学习·性能优化
A懿轩A1 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒1 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
YRr YRr1 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
认真学习的小雅兰.1 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
zhou周大哥1 小时前
linux 安装 ffmpeg 视频转换
linux·运维·服务器
kkflash31 小时前
提升专业素养的实用指南
学习·职场和发展
不想起昵称9292 小时前
Linux SHELL脚本中的变量与运算
linux