我如何从远程将 443 转发到我的机器?

我如何从远程将 443 转发到我的机器?
  1. 这是经过授权的。我只需要弄清楚怎么做。

  2. 我想将网络流量从目标机器转发到我的本地机器,这样当远程机器上的某些东西尝试通过端口 443(https)进行通信时,它的视角就来自我的本地机器。

我想要解决的问题如下:

我们在一台专门为此任务构建的机器上进行 docker 训练。目前,它无法访问 github,而我们需要它来进行训练。我们的团队被明确授权访问 github。

我的想法可能是语法上存在很多麻烦。

从我的台式机上,已经尝试过:

ssh -vnNT -R 443:[ my ip addr from remote's perspective ]:443 [ remote host name ]

我在调试输出中看到的内容是:

debug1: Authentication succeeded (publickey).
Authenticated to remoteHostName ([remoteIpAddr]:22).
debug1: Remote connections from LOCALHOST:443 forwarded to local address [ my ip ]:443
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Remote: Server has disabled port forwarding.
debug1: remote forward failure for: listen 443, connect [my ip]:443
Warning: remote port forwarding failed for listen port 443
debug1: All remote forwarding requests processed

现在,您可能会认为上述内容意味着服务器上未配置端口转发或设置为“否”。我设置的是:

AllowTcpForwarding yes
GatewayPorts yes

...我已经重启了两次。:-/

答案1

1)sshd_config 不是转发选项的唯一来源。

即使服务器允许全局转发,也可能使用远程~/.ssh/authorized_keys文件中指定的选项来限制单个连接(特定公钥)。

如果您使用 OpenSSH“证书”,则限制可能已编码在证书本身中。请使用ssh-keygen -L来检查。

2) 为此,您需要在远程系统上拥有 root 权限。

SSH 端口转发涉及普通套接字在一端侦听 TCP 连接,在另一端建立连接。(因此,它更像是代理,而不是路由器上看到的数据包级端口转发。)

使用-R,监听套接字由sshd处理您的连接的工作进程。该进程以您自己的(远程)用户 ID 运行,因此它受到与您自己的程序相同的限制。特别是,不允许将套接字绑定到 1024 以下的端口(“特权端口”范围)除非它具有 root 权限或类似权限 - 这直接意味着您必须以 root@ 身份登录到远程系统。

相关内容