如何使用 SSH 连接到远程服务器

0 股票
0
0
0
0

介绍

系统管理员必须掌握的必备工具之一就是 SSH。SSH(安全外壳协议)是一种用于安全登录远程系统的协议,也是远程访问 Linux 服务器最常用的方法。本指南将介绍如何使用 SSH 连接到远程系统。.

核心语法

要使用 SSH 连接到远程系统,我们需要使用 ssh 命令。如果您使用的是 Windows 系统,则需要安装 OpenSSH 才能从终端使用 ssh 连接。如果您更喜欢使用 PowerShell,可以参考 Microsoft 的文档将 OpenSSH 添加到 PowerShell 中。如果您希望拥有完整的 Linux 环境,可以安装 WSL(Windows 子系统 Linux 版),它默认包含 ssh。最后,作为第三种轻量级选择,您可以安装 Git for Windows,它提供了一个包含 ssh 命令的 Windows bash 终端环境。以上三种方案都得到了良好的支持,您可以根据自己的喜好选择使用哪一种。如果您使用的是 Mac 或 Linux 系统,则终端中已经包含了 ssh 命令。.

该命令的最简形式为:

ssh remote_host

本例中的 remote_host 是您要连接的 IP 地址或域名。此命令假定您在远程系统上的用户名与您在本地系统上的用户名相同。.

如果远程系统上的用户名与本地不同,您可以使用以下语法指定:

ssh remote_username@remote_host

连接到服务器后,系统可能会要求您提供密码以验证身份。稍后我们将介绍如何生成密钥来代替密码。.

要退出 SSH 并返回本地 shell,请键入:

exit

SSH 的工作原理是什么?

SSH 的工作原理是将客户端程序连接到名为 sshd 的 SSH 服务器。在前一节中,ssh 就是客户端程序。SSH 服务器已经在指定的 remote_host 上运行。在几乎所有 Linux 环境中,sshd 服务器都会自动启动。如果它由于某种原因没有运行,您可能需要暂时通过 Web 控制台或本地串口控制台访问服务器。启动 SSH 服务器所需的步骤取决于您使用的 Linux 发行版。.

在 Ubuntu 系统中,您可以通过输入以下命令启动 SSH 服务器:

sudo systemctl start ssh

这样应该就能启动 sshd 服务器,然后你就可以远程登录了。.

如何配置 SSH

更改 SSH 配置时,您会更改 sshd 服务器的设置。在 Ubuntu 系统中,主要的 sshd 配置文件位于 /etc/ssh/sshd_config。编辑之前,请务必备份此文件的当前版本:

sudo cp /etc/ssh/sshd_config{,.bak}

使用 nano 或您喜欢的文本编辑器打开它:

sudo nano /etc/ssh/sshd_config

此文件中的大部分选项都无需更改,但有几个选项您可能需要查看一下:

Port 22

端口声明指定 sshd 服务器监听连接的端口。默认值为 22。除非有特殊原因,否则建议不要更改此设置。如果您更改了端口,我们将在下文中说明如何连接到新端口。.

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

主机密钥声明指定了全局主机密钥的查找位置。我们稍后会讨论什么是主机密钥。.

SyslogFacility AUTH
LogLevel INFO

这两项内容表明了应该进行的日志记录级别。.

如果您在使用 SSH 时遇到问题,提高日志记录速率可能是发现问题的好方法。.

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

这些参数指定了一些登录信息。.

LoginGraceTime 指定在登录失败后保持连接打开的秒数。建议将此时间设置为比正常登录所需时间稍长一些。PermitRootLogin 选择是否允许 root 用户登录。在大多数情况下,如果您创建了一个具有提升权限(通过 su 或 sudo)且可以通过 SSH 登录的用户帐户,则应将其更改为 no,以最大程度地降低 root 用户访问服务器的风险。.strictModes 是一项安全措施,如果身份验证文件是公开可读的,则会拒绝登录尝试。这可以防止在配置文件不安全时进行登录尝试。.

X11Forwarding yes
X11DisplayOffset 10

这些参数配置名为 X11 转发的功能。此功能允许您在本地系统上查看远程系统的图形用户界面 (GUI)。必须在服务器上启用此选项,并在使用 SSH 客户端连接时通过 -X 选项指定此选项。更改完成后,保存并关闭文件。如果您使用的是 nano 编辑器,请按 Ctrl+X,然后按 Y,最后按 Enter 键(出现提示时)。如果您更改了 /etc/ssh/sshd_config 中的任何设置,请确保重新加载 sshd 服务器以应用更改。

sudo systemctl reload ssh

您应该对所做的更改进行全面测试,以确保它们按预期工作。在进行更改时,最好打开多个终端会话。这样,如有必要,您可以撤销配置而不会被锁定。.

如何使用密钥登录 SSH

虽然使用密码进行远程登录很有用,但设置基于密钥的身份验证速度更快、安全性更高。.

基于密钥的身份验证是如何工作的?

基于密钥的身份验证通过创建一对密钥来实现:私钥和公钥。私钥存储在客户端计算机上,并受到安全保密。公钥可以提供给任何人,也可以放置在您想要访问的任何服务器上。当您尝试使用密钥对进行连接时,服务器会使用公钥向客户端计算机发送一条消息,该消息只能由私钥读取。然后,客户端计算机向服务器发送相应的响应,服务器由此确认客户端的合法性。配置密钥后,此过程将自动完成。.

如何创建 SSH 密钥

SSH密钥必须在您要登录的计算机上创建。这通常是您的本地计算机。.

在命令行中输入以下内容:

ssh-keygen -t rsa

系统可能会要求您为密钥文件本身设置密码,但这并不常见,您应该在执行命令时按回车键接受默认值。您的密钥将创建在 ~/.ssh/id_rsa.pub 和 ~/.ssh/id_rsa 文件中。.

输入以下代码切换到 .ssh 目录:

cd ~/.ssh

查看文件权限:

ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

如您所见,id_rsa 文件只有所有者才能读写。这有助于保护其机密性。.

但是,id_rsa.pub 文件可以共享,并且具有此活动所需的适当权限。.

如何将公钥传输到服务器

如果您目前拥有基于密码的服务器访问权限,则可以通过执行以下命令将您的公钥复制到该服务器:

ssh-copy-id remote_host

这将启动一个 SSH 会话。输入密码后,它会将您的公钥复制到服务器的授权密钥文件中,这样您下次就可以无需密码登录了。.

客户端选项

通过 SSH 连接时,您可以选择提供一些可选命令。其中一些命令可能需要与远程主机 sshd 配置中的设置相匹配。.

例如,如果您更改了 sshd 配置中的端口号,则需要在客户端通过键入以下命令来匹配该端口:

ssh -p port_number remote_host

如果只想在远程系统上运行一条命令,可以在主机名后指定该命令,如下所示:

ssh remote_host command_to_run

您连接到远程设备,进行身份验证,然后执行命令。.

如前所述,如果两台计算机都启用了 X11 转发,您可以通过输入以下命令来访问该功能:

ssh -X remote_host

只要你的电脑上有合适的工具,你在远程系统上使用的图形用户界面程序现在就会在你的本地系统上打开自己的窗口。.

禁用密码验证

如果您已创建 SSH 密钥,则可以通过禁用仅密码身份验证来提高服务器的安全性。除了控制台之外,登录服务器的唯一方法是使用私钥,该私钥与您安装在服务器上的公钥配对使用。.

以 root 用户或具有 sudo 权限的用户身份打开 sshd 配置文件:

sudo nano /etc/ssh/sshd_config

找到包含“password authentication”的行,删除开头的“#”。然后,您可以将其值更改为“否”。

PasswordAuthentication no

还有两个设置无需更改(假设您尚未修改此文件),分别是 PubkeyAuthentication 和 ChallengeResponseAuthentication。它们默认已设置,内容应如下所示:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

修改完成后,保存并关闭文件。.

现在您可以重新加载 SSH 服务:

sudo systemctl reload ssh

现在应该禁用密码验证,您的服务器应该只能通过 SSH 密钥验证访问。.

结果

学习如何使用 SSH 对您未来的任何云计算项目都大有裨益。随着您不断使用不同的选项,您会发现更多高级功能,这些功能可以简化您的工作。SSH 之所以经久不衰,是因为它安全、轻便且适用于各种场景。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢