拓扑结构图,小火龙如何通过服务器A的某个端口ssh连接到服务器B呢?
ssh连接准备
首先开启服务器B的ssh连接,若显示:
ssh xx@localhost
ssh: connect to host localhost port 22: Connection refused
也许是ssh没安装
sudo apt-get install openssh-server
具体可参考:
解决Ubuntu无法被SSH连接的问题
反正确保B机可以ssh连接自己,然后确保A机也可以ssh连接到B机就可以
SSH端口转发
可以通过在A服务器上设置SSH端口转发,来实现从本机通过A服务器间接访问B服务器的效果。
需要在A服务器上创建一个SSH隧道,将某个本地端口转发到B服务器的SSH端口(默认为22)。
这样,当小火龙从本机通过这个本地端口连接到A服务器时,实际上是被转发到了B服务器上。
以下是一个基本的步骤指导:
1. 在本地执行本地端口转发命令。
这将建立一个从本地到B机的SSH隧道,通过A机作为中继。
假设A机的IP地址是A的IP
,B机的内网IP地址是192.168.1.2
(B机对于A机来说是可达的),在本地执行以下命令:
ssh -L 本地端口:192.168.1.2:22 你在A机的用户名@A的IP
在这里,本地端口可以是任意未被占用的端口,比如2222
。
这样,此命令会监听本地的2222端口,并将所有通过这个端口的数据转发到B机的SSH端口(22)。
示例命令:
ssh -L 2222:192.168.1.2:22 alice@203.0.113.1
执行这个命令后,你将被提示输入A机
上用户alice
的密码。
认证通过后,命令将在后台运行,并监听本地的2222端口。
2. 通过建立的隧道连接到B机。
隧道设置完成后,你可以通过隧道连接到B机,如下:
ssh -p 2222 你在B机的用户名@localhost
在这里,-p 2222
告诉SSH客户端通过本地的2222端口连接。由于这个端口已经通过SSH隧道连接到了B机的SSH服务,所以这个命令实际上让你能够通过A机间接连接到B机。
示例命令:
ssh -p 2222 bob@localhost