所以我有一个只能通过堡垒访问的 ec2 实例。
ec2 实例在127.0.0.1:8888/?token=$token
上为我的 jupyter 服务器提供服务
我的目标是运行一个 ssh 隧道命令,该命令将侦听127.0.0.1:8888
上的连接,并通过堡垒将它们转发到我的 ec2 实例以127.0.0.1:8888
我尝试了以下方法,但没有运气。
从本地:
(我可以通过堡垒ssh进入堡垒和ec2机器而不会出现问题)
ssh -f -N -L 127.0.0.1:8888:127.0.0.1:8888 -i ~/.ssh/id_rsa $user@$bastion_dns
ssh -f -N -L 8888:127.0.0.1:8888 -i ~/.ssh/id_rsa $user@$bastion_dns
ssh -f -N -L 8888:$ec2_private_ip:8888 -i ~/.ssh/id_rsa $user@$bastion_dns
从堡垒:
(我在堡垒安全组上打开了8888入口,并将堡垒ssh密钥添加到ec2-machine,以便我可以定期从堡垒ssh到ec2)
ssh -f -N -L 8888:127.0.0.1:8888 $user@$ec2_private_ip
借助此 SSH 隧道通过 Ubuntu 堡垒到私有子网中的实例
该命令是:
ssh -v -N -A -J $user@$bastion_dns -L 8888:localhost:8888 $user@$ec2_private_ip
使用-L
时,可以指定接收计算机应将流量发送到何处。
假设您有:
- 本地计算机
- 堡垒
- Jupyter 服务器
因此,您可以运行如下命令:
ssh -i key.pem -L 8888:jupyter-server:8888 ec2-user@bastion-IP
这会将本地计算机上的localhost:8888
转发到堡垒服务器。
然后,堡垒服务器会将请求转发到 VPC 内的jupyter-server:8888
。