这是经过授权的。我只需要弄清楚怎么做。
我想将网络流量从目标机器转发到我的本地机器,这样当远程机器上的某些东西尝试通过端口 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@ 身份登录到远程系统。