如何使用SSH跳板主机访问远程服务器
远程服务器,也被称为云服务器或虚拟私有服务器(VPS),是由第三方提供商托管在离线的计算机。它们允许存储和处理大量数据,并可以通过全球任何地方的互联网连接进行访问。远程服务器由于其可伸缩性和成本效益而在最近几年变得越来越受欢迎。
然而,访问远程服务器可能会面临一些挑战,因为它在距离上与本地网络没有直接连接。这就是SSH跳板主机的用途:它们作为本地计算机和远程服务器之间的安全中间人,允许您安全地访问它,而不会暴露任何敏感信息。
设置SSH跳板主机
SSH跳板主机提供了一种安全的方式来访问无法直接从本地机器访问的远程服务器。要使用跳板主机,您首先必须在Linux机器上设置它,并正确配置它。
在Linux机器上设置跳板主机的步骤
要在Linux机器上创建一个SSH跳板主机,您需要按照以下步骤进行操作:
- 首先,确保Linux机器已经安装了OpenSSH。
您可以通过运行命令sudo apt-get install openssh-server
来完成。
- 接下来,进入
/etc/ssh
目录,并使用命令sudo cp sshd_config sshd_config_backup
创建sshd_config
文件的备份副本。
$ 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服务。
如何将Jump Host的公钥添加到远程服务器的授权密钥文件的说明
下一步是将Jump Host的公钥添加到远程服务器的授权密钥文件中。这将允许我们在使用SSH通过Jump Host访问远程服务器时进行身份验证。
首先,在本地计算机上生成一个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端口的流量转发到该通道上,然后转发到远程网络服务器上的80端口,IP地址为192.168.1.100。
使用SSH进行端口转发可以是一个强大的工具,但是重要的是要了解这样做的安全影响。始终确保信任将流量转发到的机器,并考虑使用附加安全措施,如VPN或防火墙。
结论
在本指南中,我们讨论了如何使用SSH跳板主机访问远程服务器。我们首先解释了什么是远程服务器,以及为什么有必要访问它。
接下来,我们介绍了SSH跳板主机的概念并解释了它的目的。然后,我们提供了逐步设置在Linux机器上的SSH跳板主机、配置远程服务器以通过跳板主机访问以及使用SSH和端口转发连接到远程服务器的说明。