使用SSH隧道通过堡垒访问在EC2上运行的Jupyter Server

时间:2019-08-23 19:30:09

标签: networking amazon-ec2 ssh ssh-tunnel

所以我有一个只能通过堡垒访问的ec2实例。

ec2实例在127.0.0.1:8888/?token=$token上为我的jupyter服务器提供服务

我要记住的目标是运行一个ssh tunnel命令,该命令将侦听127.0.0.1:8888上的连接,并将它们通过堡垒转发到我的ec2实例到127.0.0.1:8888

我已经尝试了以下方法,但是没有运气。

来自本地

(我可以通过堡垒同时进入堡垒和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

2 个答案:

答案 0 :(得分:1)

使用-L时,您可以指定接收计算机应将流量发送到何处。

假设您拥有:

  • 本地计算机
  • 堡垒
  • Jupyter服务器

因此,您可以运行以下命令:

ssh -i key.pem -L 8888:jupyter-server:8888 ec2-user@bastion-IP

这会将本地计算机上的localhost:8888转发到堡垒服务器。

然后,堡垒服务器将请求转发到VPC内的jupyter-server:8888

答案 1 :(得分:0)

借助此SSH Tunnel through Ubuntu bastion to instance in private subnet

来解决它

命令是:

ssh -v -N -A -J $user@$bastion_dns -L 8888:localhost:8888 $user@$ec2_private_ip