整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

适用于苹果Mac的 5 个最佳 SSH 客户端软件

SH 或 Secure Shell 是一种网络协议,允许您通过加密连接远程访问另一台计算机。您可以使用 SSH 在一台计算机上打开文件和运行程序,同时使用另一台计算机。

SSH 内置于大多数现代计算机中,包括 Mac。这非常适合远程工作和轻松访问文件。但是哪个 SSH 客户端最适合 Mac?macz小编编制了一份 Mac SSH 客户端列表,看看哪个最适合您。

一、Termius Beta

Termius Mac 是一款非常好用而且漂亮的SSH客户端,能快速远程控制服务器,可以定制自己喜欢的主题,支持FTP/SFTP连接。

Termius 可让您将主机组织成组。组允许您共享设置,但每个主机都可以有自己单独的首选项。此数据以及连接和命令历史记录会在您的所有设备之间安全同步。Termius 使用端到端加密来确保您的数据安全无虞。

Termius for Mac(SSH客户端) https://www.macz.com/mac/1565.html?id=NzY4OTY0Jl8mMjcuMTg3LjIyNy4zMQ%3D%3D

二、SSH Config Editor

SSH Config Editor Pro 是一款用于管理OpenSSH ssh客户端配置文件的工具。使用SSH Config Editor Pro您可以管理您的SSH配置文件和known_hosts中文件。您可以添加或编辑身份,端口转发和任何其他ssh配置选项。以一种智能,高效的方式管理您的SSH配置文件。

如果您使用 SSH 连接到远程系统,一年不止一次,您肯定需要帮助来处理所有配置。SSH Config Editor是一个很好的工具,可以让您的 OpenSSH 客户端配置和已知主机文件处于控制之下。在一个连贯的界面中管理身份、端口转发和其他选项。

SSH Config Editor Pro for Mac(SSH配置文件管理器) https://www.macz.com/mac/515.html?id=NzY4OTY0Jl8mMjcuMTg3LjIyNy4zMQ%3D%3D

三、ZOC

ZOC 是一款专业的专业终端模拟器和 Telenet 客户端,内置 SSH、Telnet、rlogin、串行端口等多种通信方式,可以连接 Unix / Linux(CentOS,Unbutu)主机和 shell 帐号、BBS、IBM 大型机、MUD 或串行端口设备。

其令人印象深刻的仿真列表和强大的 功能 使其成为一种可靠而优雅的工具,可通过安全外壳、 远程登录、串行电缆和其他通信方法将您连接到主机和大型机 。

凭借其现代用户界面,该终端有多种方式让您的生活更轻松。ZOC 以自己的方式成为终端模拟器的瑞士军刀:多功能、强大、经过验证。

ZOC for Mac(最好用的终端仿真器) https://www.macz.com/mac/2700.html?id=NzY4OTY0Jl8mMjcuMTg3LjIyNy4zMQ%3D%3D

四、SecureCRT

VanDyke SecureCRT 为计算专业人士提供了坚如磐石的终端仿真,通过高级会话管理以及多种节省时间和简化重复任务的方式提高了生产率。SecureCRT为组织中的每个人提供安全的远程访问,文件传输和数据隧道。无论您是要替换Telnet还是终端,还是需要功能更强大的安全远程访问工具,SecureCRT都是您可以终日使用的应用程序。凭借SSH的可靠安全性,广泛的会话管理和高级脚本编写,SecureCRT将帮助您提高工作效率至第n级。

SecureCRT for Mac(强大的终端SSH工具) https://www.macz.com/mac/1551.html?id=NzY4OTY0Jl8mMjcuMTg3LjIyNy4zMQ%3D%3D

五、Electerm

Electerm 是一款集终端模拟器、文件管理器、ssh远程连接、sftp客户端为一体的工具(类似于xshell),允许双击直接编辑远程文件(小文件),使用内置编辑器编辑本地文件,使用publickey +密码验证,Zmodem(rz,sz),还有自定义终端样式,全局/会话代理,将书签/主题/快速命令同步到github secret gist等功能。

Electerm for Mac(免费ssh客户端) https://www.macz.com/mac/5990.html?id=NzY4OTY0Jl8mMjcuMTg3LjIyNy4zMQ%3D%3D

以上就是小编今天为大家分享的内容,希望对您有所帮助,想了解更多关于Mac相关知识,请关注macz.com吧!

前有近70%的台式电脑运行Windows系统,另外20% 基于 macOS。鉴于此,当您得知托管网站的服务器由Linux驱动时,许多人可能会有点担心——Linux是一种传统上与计算机极客和技术专家相关的操作系统。

事实上,你没什么可担心的。

网络托管行业已调整其服务,以确保您无需成为技术专家即可使用托管帐户。SPanel等现代服务器管理解决方案通过新手友好的点击界面为您提供典型网站所有者可能需要的一切。

然而,对于经验丰富的网站开发人员和管理员来说,这并不总是足够的。他们通常发现使用SSH 命令执行各种任务更容易。您访问此页面的事实意味着您很可能也想了解有关Linux 命令的更多信息。

了解它们确实很有意义。它将使您更好地了解服务器的工作原理并提高您的技术专业知识。

那么,让我们开始吧。

完整文章来源:对网站开发人员最有用的Linux SSH命令汇总-国外VPS网站

什么是SSH以及如何使用它?

在开始学习命令之前,我们首先需要解释如何实际执行它们。这一切都由SSH 实现- 这是一种将您的计算机连接到服务器并允许您通过互联网发送命令的网络协议。SSH 代表安全外壳

要理解 SSH 的价值,最好分别解释这两个词。

安全的

SSH 是安全的,因为它使用复杂的加密技术来完全加密您与服务器之间的通信通道。在此工具出现之前,客户端与服务器之间的信息以纯文本形式传输,这为窃听、数据盗窃甚至服务器接管提供了机会。

为了消除这种情况,SSH 使用一种涉及公钥和私钥组合的安全算法来确保您的计算机和托管服务器之间交换的任何信息都无法被第三方访问。

在计算环境中,Shell是您用来与操作系统交互的界面。如果您使用 Windows,则 Shell 由桌面、任务栏、“开始”菜单、关闭、恢复和最小化按钮等组成。

当谈到像 Linux 这样的基于 Unix 的操作系统时,shell 通常与终端相关联- 该程序读取您输入的命令并告诉计算机需要执行什么操作。

因此,当您使用 SSH 时,您会与服务器建立安全连接并发送命令。shell 会解释这些命令并告诉 Linux 您要做什么。

建立 SSH 连接

打开与服务器的 SSH 连接的最简单方法是使用计算机自己的命令行界面。Windows 用户可以使用PowerShell命令提示符,如果您有 Mac 或其他基于 Unix 的操作系统,则终端是最简单的方法。

你从以下开始:

ssh [你的用户名]@[你的服务器的 IP 或主机名]

您的计算机将尝试在服务器上的端口 22上建立连接。请记住,出于安全原因,您的主机可能会使用不同的 SSH 端口。如果是这种情况,您需要在上面的命令中添加-p后跟端口号。

然后,服务器会要求您输入密码,身份验证成功后,它会打开 shell,以便您开始执行命令。另一种选择是使用专用的 SSH 客户端

PuTTy是最受欢迎的,主要是因为它很轻量,适用于您能想到的几乎所有平台。它会记住您的会话信息和登录凭据,因此您无需在每次使用时输入密码。此外,它还支持通过SSH 密钥进行身份验证- 这是比常规密码更方便、更安全的替代方案。

解释了基础知识后,现在是时候看看建立 SSH 连接后可以做什么了。

完整文章来源:对网站开发人员最有用的Linux SSH命令汇总-国外VPS网站

面向网站所有者和开发人员的有用 SSH 命令

通过 SSH 对服务器执行的操作主要取决于您拥有的访问权限。如果您的主机授予您root 权限,您可以执行任何操作。您可以安装新软件、应用更新、更改核心服务器设置、更新配置文件等。

但是,您不需要拥有 root 权限才能执行所有操作。很多命令不需要完全控制服务器,但仍可以帮助您管理项目。让我们来看看其中的一些。

  • 光盘

与此列表中的大多数命令不同,cd适用于许多非 Unix 操作系统,包括 Windows。它代表更改目录,您可能已经猜到了,它用于更改当前工作目录

启动新的 SSH 会话后,您当前的工作目录是您的帐户的主文件夹(通常是/home/[您的帐户的用户名]/)。里面是public_html文件夹 – 您网站的文档根目录。要转到该文件夹,您需要输入:

$ cd public_html

您也可以直接跳转到public_html内的目录:

$ cd public_html/文件夹名称

要返回上一级,可以使用:

$ CD..

要直接返回到您帐户的主目录,您可以使用:

$ CD〜

  • ls

cd一样,ls适用于许多非 Unix 系统。您可以使用它来查看目录的内容。例如,如果您在public_html中,并且只输入ls,您将看到按字母顺序排列的当前目录中的文件和文件夹的名称。

您可能会注意到列表中缺少 .htaccess 文件。这是因为它被隐藏了。

要包含隐藏文件,您需要使用:

$ ls -a

如果您想查看文件大小,权限和所有权信息以及修改时间戳,您需要:

ls -l

  • 建立目录

mkdir命令创建新目录。如果要在当前工作目录中创建新文件夹,只需在命令后指定其名称即可。

$ mkdir 新文件夹

但是,您也可以创建子文件夹。例如,您在home/user中,可以使用以下命令在public_html(子目录)内设置一个新文件夹:

$ mkdir public_html/新文件夹

  • R M

这也许是你最应该小心使用的命令。它是remove的缩写,用于从磁盘中删除对象。这些对象可能包括文件、文件夹、符号链接(相当于 Windows 快捷方式)、文件系统等。

请记住,使用rm删除的文件和文件夹不会被发送到回收站或垃圾设备,如果您犯了错误,这些设备无法帮助您恢复它们。它们会从磁盘中删除,因此它们将永远消失。

语法非常简单,特别是当您想从当前工作目录中删除文件时。您需要做的就是指定文件的全名(包括扩展名)。例如:

$ rm 文件.txt

不过,还是有很多选择的:

  • $ rm -f强制删除指定的文件或文件夹。没有提示询问您是否确定要继续。
  • $ rm -r用于递归删除文件夹及其中的对象。
  • $ rm -v显示一条消息,通知您该过程是否成功。
  • 自由度

df命令使用Linux 中嵌入的磁盘释放实用程序向您显示已挂载文件系统的存储空间使用情况的信息

df本身会显示一个表格,其中列出了服务器上所有已挂载的文件系统、它们的总大小(以千字节为单位)、已使用量、可用量、使用百分比以及挂载点。

该命令可用于特定的文件系统,并且使用-h人类可读的缩写)标志,使用数据将转换为兆字节和千兆字节,因此输出更容易理解。

du命令会打印特定文件和目录的磁盘使用情况的详细报告。它可让您更有效地管理存储,识别占用过多空间的目录,并全面改善服务器上的数据管理。

默认情况下,它会生成当前工作目录中所有文件、文件夹和子文件夹的列表,因此最好将其应用于特定对象。

语法如下:

$ du [标志] [文件路径]

您可能会在命令中使用一些标志。使用-h,该实用程序会将使用情况统计信息转换为千字节、兆字节和千兆字节,使报告更易于阅读。使用-s标志,该实用程序仅打印它所应用的特定目录的空间使用情况信息,而不详细说明每个 inode。如果您使用–time,您将在每个对象旁边看到一个时间戳,显示上次修改的时间。

  • 附言

ps命令代表进程状态,可让您深入了解服务器上当前正在运行的任务。单独执行时,ps会打印一个表格,其中包含所有当前活动的进程、它们的 ID、用户登录的终端类型、CPU 时间以及启动它的命令。

默认情况下,ps显示与当前终端会话相关的进程的信息。使用-A选项,您可以查看整个系统上运行的进程。可见信息的数量取决于用户拥有的权限级别。

  • 寻找

find命令是 Linux 用户最有用的工具之一。它是一款功能强大的实用程序,可帮助您快速高效地在服务器文件系统中找到所需信息。

您可以使用以下语法:

$ find [路径] [选项] [表达式]

路径指定您希望 Linux 搜索的位置。选项允许您修改搜索条件,并通过表达式设置搜索条件。使用该命令时,您可以了解许多选项和条件。为了了解它的工作原理,我们有一个简单的示例。

假设您在public_html目录的各个子文件夹中分散安装了多个 WordPress。您想知道有多少个以及它们位于何处。

每个活动的 WordPress 安装都有一个wp-config.php 文件,您可以利用它。您需要的命令是:

$ 查找 /public_html/-name“wp-config.php”

Linux 将搜索public_html文件夹的内容并显示所有WordPress 配置文件的文件路径列表。

cat命令是查看文件内容的最简单方法。例如,如果您在WordPress 网站的文档根文件夹中,并且想要查看主配置文件中的内容,只需输入:

$ cat wp-config.php

Linux 无需打开文本编辑应用程序即可在终端中打印文件内容。您可以通过将文件名称添加到命令中(例如$ cat file1 file2)来一次打开多个文件,并且-n选项会添加行号以使输出更具可读性。

您也可以使用cat创建新文件。语法如下:

$ cat > 文件名

按下Enter后,Linux 会将您移至新行,您可以在此输入文件的内容。要保存文件,请再次按下Enter并按Ctrl+D

您还可以将两个文件合并在一起。您需要遵循的语法是:

$ cat 文件1.txt 文件2.txt > 文件3.txt

要将一个文件的内容附加到另一个文件的末尾,可以使用:

$ cat 文件1.txt >> 文件2.txt

如果要将文本附加到文件,语法为:

$ cat >> 文件名

控制台将打开一个新行,您可以在其中添加文本。按EnterCtrl+D保存更改。

  • 较少的

使用less命令,您可以一次一页地查看文件内容。它不会一次显示所有文本并滚动查看,而是仅打印适合屏幕的信息。您可以使用空格键移动到下一页。

当您需要查看包含大量数据的大型日志时,此功能特别有用。它不仅使阅读日志更加容易,而且还有助于服务器更轻松地运行。如果您使用cat查看大型文件,则需要加载并显示整个文档。使用less 时,Linux 只会读取用户在任何给定时间可见的数据,因此文件实际上是一次加载一小块。

如果要停止阅读文档并返回 shell,请按q

  • 纳米

GNU Nano 是大多数Linux 发行版预装的文本编辑器。有了它,你可以打开、查看和修改任何文件的内容

它并不是唯一的 Linux 文本编辑器,一些开发人员认为 Vim 是更好的选择。然而,普遍的共识是Nano 更加用户友好,并且对于普通网站所有者来说具有足够的功能。

要打开现有文件,您只需使用nano命令并指定要编辑的文件。如果它位于您当前的工作目录中,您只需输入其名称。如果它位于其他文件夹中 - 您必须指定文件路径。例如:

$ nano /public_html/blog/wp-config.php

如果你想创建一个新文件,原理是一样的。输入nano命令,然后输入新文件的名称。

Nano 可能是一个命令行工具,但它的界面实际上非常简单易用。它还有很多功能。您可以使用鼠标或键盘来标记、复制、剪切和粘贴文本

它具有查找和替换实用程序以及支持语言的语法高亮功能。编辑完文件后,您可以按Ctrl+X。Nano 会在关闭应用程序并返回到 shell 之前询问您是否要保存更改。

  • grep

Grep代表“全局正则表达式打印”。该命令用于在 Linux 中查找文件内的文本模式。

比如说,你想找出你的 WordPress 网站使用的数据库的名称。你知道它在wp-config.php文件中的DB_NAME变量下可用。

您无需打开文件并尝试自己找到包含正确信息的行,而是可以使用以下命令:

$ grep “DB_NAME” wp-config.php

上述命令仅当您与 wp-config 文件位于同一文件夹中时才有效。如果您想在当前工作目录及其所有子文件夹中执行递归搜索,则可以使用-r选项。

默认情况下,Linux 中的所有命令和名称都区分大小写。如果要在使用grep时忽略大小写,请使用-i选项。另一方面,如果您只想查找精确匹配,请使用-w选项。

如果您只需要包含所查找术语的文件列表,则可以使用-l选项。

  • 代替

替换实用程序可以自动将一个文本字符串替换为另一个文本字符串。您只需指定要编辑的文件和要更改的对象。语法如下:

$ 替换“原始文本”“新文本”—file.txt

请记住将字符串放在引号中,并在和文件名之间留一个空格。

  • 定时任务

在 Linux 中,您可以指定在特定时间执行的命令或程序。例如,您可以创建一个脚本来检查您网站的 CMS 和插件的更新,并在可用时安装它们。可以将该脚本安排在每天午夜您的网站不太繁忙时运行。

计划任务称为cron 作业。您创建的每个 cron 作业都通过您自己的 cron 表进行存储和管理,使用crontab命令,您可以查看和编辑该表。

要查看为您的用户设置的 cron 作业,您需要以下命令:

$ crontab -l

如果你想编辑它,你可以使用:

$ crontab -e

Linux 打开默认文本编辑器(通常是 GNU Nano,但也可能是 Vim)并允许您修改 cron 表。

服务器所有者还可以编辑其他用户的 cron 表。为此,他们需要使用-u选项指定要编辑哪个帐户。

  • wget/curl

wgetcurl都用于将文件下载到您的服务器上。两者之间的主要区别在于wget被认为更加用户友好,而curl是功能更丰富的工具,具有更广泛的选项和支持的协议

wget的语法和您期望的一样简单。您只需添加要下载的文件的 URL。例如,如果您希望将包含最新版本的WordPress 的存档下载到您的服务器,您需要的命令是:

$ wget https://wordpress.org/latest.tar.gz

这样,Linux 就会下载TAR 档案并将其以相同的名称保存在当前工作目录中。如果下载过程在下载完成之前中断,您可以使用-c 选项(放在 URL 之前)恢复下载,而不是从头开始 - 在移动大文件时很有用。

curl使用的语法类似。以下是完成上述任务的基本命令:

$ curl -O https://wordpress.org/latest.tar.gz

这会将 WordPress 存档作为latest.tar.gz保存在您当前的工作目录中。如果要使用其他名称保存它,请使用–output选项。例如,如果我们希望将存档存储为wordpress.tar.gz而不是latest.tar.gz,我们将使用:

$ curl –输出 wordpress.tar.gz https://wordpress.org/latest.tar.gz

与wget类似,curl使用-c选项支持连续下载。

  • 柏油

Tar(有时称为 tarball)是一种计算机实用程序,用于将多个文件收集到一个存档中。该技术最早是在 20 世纪 70 年代开发的,其名称源于磁带存档,因为当时一些存储设备使用磁带。

现在看来这已经是老生常谈了,但尽管如此,tar 档案至今仍广泛传播,尤其是在基于 Unix 的系统上。如果您经常使用命令行,那么您应该熟悉tar命令。

让我们从创建一个新的存档开始。假设您在主目录中,并想使用public_html 文件夹的内容创建一个存档。命令是:

$ tar -vcf 新.tar public_html

如您所见,我们使用了三个选项。-v标志代表详细模式。这意味着 Linux 将在执行存档时打印出它放入存档中的每个文件和目录的名称。您可以在没有它的情况下创建存档,但大多数服务器所有者更喜欢将其用作进度更新。

使用-c选项,我们告诉 Linux 我们正在创建一个新的档案,使用-f,我们表示我们将指定其名称。

上述命令会将您想要的文件和文件夹放入存档中,但不使用任何压缩。要启用它,您需要使用-z标志对 Linux 使用 gzip 压缩数据。您还必须使用.tar.gz扩展名保存新存档。

因此,上面的命令看起来将是这样的:

$ tar -vcfz new.tar.gz public_html

要查看现有档案的内容,您需要将-c选项替换为-t。因此,如果您想检查几分钟前创建的档案中的内容,您需要输入:

$ tar -vtf 新.tar.gz

最后,当您需要从存档中提取文件和文件夹时,应使用-x选项。要从存档中卸载所有数据,命令如下:

$ tar -vxf 新.tar.gz

您还可以通过将其文件路径添加到命令末尾来从档案中提取单个文件。

  • 压缩/解压缩

zip和unzip命令用于管理 ZIP 档案。Zip 是目前最流行的格式,主要是因为它在 Windows 机器上开箱即用虽然Tar 档案在Linux 系统上被广泛使用,但您也可能会遇到Zip 档案,因此学习如何通过命令行界面管理它们是个好主意。

语法非常简单。当您想要创建一个新的存档并将文件放入其中时,您可以使用zip命令,后跟存档的名称以及要添加到其中的项目的文件路径。

例如:

$ zip new-zip-archive 文件1.txt 文件2.php 文件3.css

请注意,.zip扩展名会自动添加到您的新存档中。您只能将具有特定扩展名的文件添加到存档中。例如,如果您只想存档当前工作目录中的 PHP 文件,则需要:

$ zip new-zip-存档*.php

如果要将文件夹添加到档案中,请导航到其父目录并使用 -r选项创建如下命令:

$ zip -r 新 zip 存档文件夹名称

与 Tar 不同,Zip 默认使用压缩。实际上,有十个级别可供选择,级别 0 表示完全不压缩,级别 9 提供最小的存档文件大小。默认使用级别 6,但您可以使用数字作为选项指定其他级别。

例如,如果您想对上述命令使用级别 3,则需要:

$ zip -3 -r 新 zip 存档文件夹名称

解压更加简单。语法如下:

$ unzip 档案名称.zip

Linux 将自动从档案中提取数据并将其放置在当前工作目录中。

  • 历史

此命令的作用不言自明。它为您提供了最近在服务器上执行的命令列表。您看到的条目数取决于shell 配置和使用模式等因素。列表中通常包含自当前会话开始以来您执行的命令。

如果您需要多次使用复杂命令, history命令会很有用。历史列表中的条目是编号的,Linux 为您提供了从 shell 中快速调用它们的选项。

例如,如果要执行列表中的第 54 条命令,则输入:

$ !54

Linux 自动在终端中输入命令并运行。

如果您正在诊断问题并尝试发现发生了什么,历史记录实用程序也会有所帮助。例如,如果您发现文件丢失,您可以使用rm确定您是否已自行删除它。您可以使用由竖线 ( | )分隔的historygrep命令组合来执行此操作。:

$ 历史|grep“rm”

这将为您提供历史列表中的所有rm命令,帮助您准确查看已删除的内容。

SPanel 和 SSH 命令

许多网站所有者更喜欢在不深入研究命令行界面的情况下运行他们的项目。这就是我们努力使SPanel尽可能易于使用的原因。

即使没有服务器管理经验的人也应该能够轻松掌握 SPanel 及其各种工具。不过,我们也知道,我们的一些客户是经验丰富的专业人士,他们认为命令行是处理日常网站管理任务的有效方式。

这些人需要访问他们服务器上的Linux 终端,但访问必须快速、简单且安全。这就是为什么SPanel服务器的所有者是唯一可以决定谁可以打开远程 shell 以及谁不能打开的人。在 SPanel 管理界面的主菜单中,您会找到一个名为“管理 SSH 访问”的工具。打开它后,您会看到服务器上所有帐户的列表,旁边有切换开关。

通过这些,您可以决定哪些项目可以通过命令行进行管理。默认情况下,SSH 访问是禁用的,但一旦启用,用户可以打开远程 shell 并使用命令来管理其帐户上的文件和文件夹。

他们可以通过传统的 SSH 客户端进行操作,也可以在浏览器中建立连接。在SPanel 用户界面主页的工具部分下,您会找到SSH 终端。如果您的帐户启用了 SSH 访问权限,它可以让您直接在浏览器中打开 shell,然后您就可以立即开始执行命令。

结论

通过命令行管理网站并不适合所有人,尤其是现在有许多新手友好的替代方案,带有点击界面。然而,许多经验丰富的管理员发现命令更快、更高效。

事实上,了解命令行界面并不是一个坏主意。虽然现在它可能不是运行网站的必要条件,但它可以让你深入了解服务器的内部工作原理,并帮助你获得技术知识,从而简化你的工作流程,让你的生活更轻松。

常问问题

问: Linux 中最广泛使用的命令是什么?

答:目前没有关于最广泛使用的 Linux 命令的具体统计数据。但是,逻辑决定它应该是ls。命令行界面默认不显示当前工作目录的内容,因此管理员需要使用ls命令来查看他们正在处理的内容。

问: SSH 支持 GUI 吗?

答: SSH 严格来说是一种命令行协议。理论上,您可以使用SSH 远程启动基于 GUI 的应用程序,并在与常规 FTP 客户端的 SFTP 会话期间加密数据流。但是,它与完全基于 GUI 的会话(例如通过Windows远程桌面协议设置的会话)完全不同。

问: SSH 需要 root 访问权限吗?

答:您拥有的权限级别取决于您的托管套餐。有些套餐为您提供对服务器的完全 root 访问权限,允许您安装其他软件、管理核心服务器设置等。对于其他套餐,帐户所有者仍然可以打开远程 shell,但他们的权限仅限于管理文件、文件夹和数据库以及使用预安装的工具来运行他们的网站。

更多相关知识:国外VPS网站 - 国外VPS测评,云服务器,香港VPS,主机推荐

SH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密

传统的对称加密使用的是一套秘钥,数据的加密以及解密用的都是这一套秘钥,可想而知所有的客户端以及服务端都需要保存这套秘钥,泄露的风险很高,而一旦秘钥便泄露便保证不了数据安全。

非对称加密解决的就是这个问题,它包含两套秘钥 - 公钥以及 私钥,其中公钥用来加密,私钥用来解密,并且通过公钥计算不出私钥,因此私钥谨慎保存在服务端,而公钥可以随便传递,即使泄露也无风险。

保证SSH安全性的方法,简单来说就是客户端和服务端各自生成一套私钥和公钥,并且互相交换公钥,这样每一条发出的数据都可以用对方的公钥来加密,对方收到后再用自己的私钥来解密。



链接创建

由上一张图可以看出来,两台机器除了各自的一套公、私钥之外,还保存了对方的公钥,因此必然存在一个交换各自公钥的步骤。实际上并不是简单的各自发送公钥,而是存在一些专门的算法。这一步在首次链接时、数据传送之前发生。


  1. 客户端发起链接请求
  2. 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  3. 客户端生成密钥对
  4. 客户端用自己的公钥异或会话ID,计算出一个值,并用服务端的公钥加密
  5. 客户端发送加密后的值到服务端,服务端用私钥解密
  6. 服务端用解密后的值异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  7. 至此,双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密


这里有一个有趣的地方,两台机器第一次使用SSH链接时,当服务端返回自己的公钥(第2步)的时候,客户端会有一条信息提示,大意是无法验证对方是否可信,并给出对方公钥的MD5编码值,问是否确定要建立链接。

这是因为SSH虽然传输过程中很安全,但是在首次建立链接时并没有办法知道发来的公钥是否真的来自自己请求的服务器,如果有人在客户端请求服务器后拦截了请求,并返回自己的公钥冒充服务器,这时候如果链接建立,那么所有的数据就都能被攻击者用自己的私钥解密了。这也就是所谓的中间人攻击


利用密码登录

SSH还常用来远程登录到别的机器,有两种常用的方法,第一种便是账号密码登录。



  1. 服务端收到登录请求后,首先互换秘钥,详细步骤如上一节所述。
  2. 客户端用服务端的公钥加密账号密码并发送
  3. 服务端用自己的秘钥解密后得到账号密码,然后进行验证
  4. 服务端用客户端的公钥加密验证结果并返回
  5. 服务端用自己的秘钥解密后得到验证结果


利用公钥登录

有些时候并不是开发者手动去连接服务器,而是客户端的程序需要连接到服务器,这时候用密码登录就比较不方便,一是需要处理输入密码的问题,二是需要想办法安全的储存密码到程序里,这种情况下便可以利用公钥来进行无密码登录。


  1. 客户端用户必须手动地将自己的公钥添加到服务器一个名叫authorized_keys的文件里,顾名思义,这个文件保存了所有可以远程登录的机器的公钥。
  2. 客户端发起登录请求,并且发送一个自己公钥的指纹(具有唯一性,但不是公钥)
  3. 服务端根据指纹检测此公钥是否保存在authorized_keys中
  4. 若存在,服务端便生成一段随机字符串,然后利用客户端公钥加密并返回
  5. 客户端收到后用自己的私钥解密,再利用服务端公钥加密后发回
  6. 服务端收到后用自己的私钥解密,如果为同一字符串,则验证通过


利用公钥登录的关键是必须手动将客户端的公钥添加到服务端,比如GitHub便有这一步骤,添加了之后便可无密码登录。


参考文献:

  • SSH登录认证详解(https://www.cdxy.me/?p=394)
  • Intro to SSH and SSH Keys(https://www.youtube.com/watch?v=mF6J-VQHPxA)
  • 图解SSH(https://www.jianshu.com/p/33461b619d53)
  • SSH原理与运用(http://www.ruanyifeng.com/blog/2011/12/sshremotelogin.html)