如何使用 SSH 跳板主机访问远程服务器?
简介
远程服务器,也称为云服务器或虚拟专用服务器 (VPS),是在异地托管的计算机器,通常由第三方提供商托管。它们允许存储和处理大量数据,并且可以通过互联网连接从世界任何地方访问。近年来,由于远程服务器的可扩展性和成本效益,它们变得越来越受欢迎。
但是,由于远程服务器的距离和缺乏与本地网络的直接连接,访问它可能具有挑战性。这就是 SSH 跳板主机发挥作用的地方:它们充当您的本地计算机和远程服务器之间的安全中介,允许您安全地访问它,而无需泄露任何敏感信息。
设置 SSH 跳板主机
SSH 跳板主机提供了一种安全的方式来访问无法从您的本地机器直接访问的远程服务器。要使用跳板主机,您必须首先在 Linux 机器上设置它并正确配置它。
在 Linux 机器上设置跳板主机的步骤
要在 Linux 机器上创建 SSH 跳板主机,您需要执行以下步骤 -
首先,确保您的 Linux 机器已安装 OpenSSH。
接下来,导航到 `/etc/ssh` 目录并使用命令 `sudo cp sshd_config sshd_config_backup` 创建 `sshd_config` 文件的备份副本。
您可以通过运行命令 `sudo apt-get install openssh-server` 来实现。
$ cd /etc/ssh/ $ sudo cp sshd_config sshd_config_backup
然后使用您喜欢的文本编辑器(例如 Nano 或 Vim)编辑 `sshd_config` 文件。查找以 `#Port 22` 开头的行,删除 # 符号,并将 22 更改为另一个端口号(例如,1234)。
在 `sshd_config` 的末尾添加这两行 -
AllowAgentForwarding yes GatewayPorts yes
保存并关闭文件。
使用命令 `sudo systemctl restart ssh` 重启 SSH。
您现在已在 Linux 机器上设置了 SSH 跳板主机。
如何配置跳板主机的防火墙设置的说明
在 Linux 机器上创建 SSH 跳板主机后,必须确保其防火墙设置已正确配置。要允许通过端口 1234(或您选择的任何端口)访问,请执行以下步骤 -
通过运行以下命令检查 ufw(Uncomplicated Firewall)是否已安装 -
sudo apt-get install ufw
使用以下命令允许对端口 1234 的传入连接 -
sudo ufw allow 1234/tcp
使用以下命令启用防火墙 -
sudo ufw enable
通过运行以下命令验证您的规则是否已应用 -
sudo ufw status numbered
这将显示所有防火墙规则的编号列表,以及它们相应的状态和端口。通过执行这些步骤,您现在应该已在 Linux 机器上设置了一个跳板主机,并正确配置了其防火墙设置。
通过跳板主机配置远程服务器以进行访问
通过跳板主机配置远程服务器以进行访问的步骤
在我们使用跳板主机远程访问服务器之前,我们需要配置服务器以允许来自跳板主机的连接。为此,我们需要编辑远程服务器上的 SSH 配置文件。首先,使用 SSH 和您的用户名和密码连接到远程服务器。
然后使用您喜欢的文本编辑器打开位于 /etc/ssh/sshd_config 的 SSH 配置文件。在此配置文件中,搜索包含“AllowUsers”或“AllowGroups”的行。
如果这些行中的任何一行存在于文件中,请在其后添加您的用户名或组名,并用空格分隔。接下来,搜索包含“PermitRootLogin”的行,并将它的值设置为“no”。
PermitRootLogin no
这是一项重要的安全措施,因为它确保没有人可以直接以 root 身份登录到您的远程服务器。相反,如果需要,您可以在稍后使用 sudo 权限。
通过在 Vim 中键入“:wq”或在 Nano 中键入“:x”来保存并退出 SSH 配置文件。通过运行“systemctl restart ssh”重新启动远程服务器上的 SSH 服务。
如何将跳板主机的公钥添加到远程服务器的授权密钥文件中的说明
下一步是将我们的跳板主机的公钥添加到我们的远程服务器的授权密钥文件。这将允许我们使用 SSH 通过跳板主机访问远程服务器时进行身份验证。
首先,如果您尚未这样做,请在您的本地机器上生成一个 RSA 密钥对。您可以通过运行以下命令来实现 -
ssh-keygen -t rsa
生成密钥对后,使用以下命令将其公钥 (id_rsa.pub) 复制到剪贴板 -
pbcopy < ~/.ssh/id_rsa.pub
接下来,使用 SSH 和您的用户名和密码连接到远程服务器。
连接后,在远程服务器上的 ~/.ssh 目录中创建一个名为 authorized_keys 的新文件(如果该文件尚不存在)。使用您喜欢的文本编辑器打开此文件,并将跳板主机的公钥粘贴到其中,方法是从剪贴板粘贴。
保存并退出 authorized_keys 文件。现在您可以关闭到远程服务器的 SSH 连接并测试通过跳板主机访问它。
通过跳板主机连接到远程服务器
使用 SSH 和跳板主机作为中介连接到远程服务器的步骤
设置跳板主机并配置远程服务器后,您现在可以使用 SSH 和跳板主机作为中介连接到远程服务器。为此,在本地机器上打开一个终端并输入以下命令 -
ssh -J [user@]jump-host [user@]destination-host
将 ```[user@]jump-host``` 替换为跳板主机的用户名和主机名或 IP 地址。将 ```[user@]destination-host``` 替换为远程服务器的用户名、主机名或 IP 地址。
如何使用 SSH 端口转发的说明
SSH 端口转发允许您通过加密的 SSH 连接将网络流量从一台机器转发到另一台机器。这对于访问在无法从本地机器直接访问的远程服务器上运行的服务很有用。
要使用 SSH 设置端口转发,您需要使用 `-L` 选项,后跟两个用冒号分隔的参数。第一个参数指定将在本地机器上转发的端口号。
第二个参数指定网络流量应转发到远程机器上的哪个位置。例如,如果您想将本地机器上端口 8080 的流量转发到 192.168.1.100 上远程 Web 服务器上的端口 80,您可以使用以下命令 -
ssh -L 8080:192.168.1.100:80 [user@]jump-host
这将在您的本地机器和跳板主机之间创建一个加密隧道,将从本地机器上的端口 8080 转发的流量通过此隧道发送,然后转发到 192.168.1.100 上远程 Web 服务器的端口 80。
使用 SSH 进行端口转发可能是一个强大的工具,但务必了解这样做的安全隐患。始终确保您信任要将流量转发到的机器,并考虑使用其他安全措施,例如 VPN 或防火墙。
结论
在本指南中,我们讨论了如何使用 SSH 跳板主机访问远程服务器。我们首先解释了什么是远程服务器以及为什么可能需要访问它。
接下来,我们介绍了 SSH 跳板主机的概念并解释了它的用途。然后,我们提供了在 Linux 机器上设置 SSH 跳板主机、通过跳板主机配置远程服务器以进行访问以及使用 SSH 和端口转发通过跳板主机连接到远程服务器的分步说明。