Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在AllowTcpForwarding设置为no的情况下进行ssh转发?_Linux_Git_Shell_Ssh_Portforwarding - Fatal编程技术网

Linux 如何在AllowTcpForwarding设置为no的情况下进行ssh转发?

Linux 如何在AllowTcpForwarding设置为no的情况下进行ssh转发?,linux,git,shell,ssh,portforwarding,Linux,Git,Shell,Ssh,Portforwarding,有一些开发需要在一些远程设备上完成。幸运的是,我可以访问shell,但我需要通过一个将AllowTcpForwarding设置为false的网关 我在文档中看到了一个高峰,上面写着: AllowTcpForwarding指定是否允许TCP转发。这个 默认值为“是”。请注意,禁用TCP转发不会 提高安全性,除非用户也被拒绝shell访问,因为 可以随时安装自己的货代 我将如何安装(或建造)自己的货运代理?我这里的目标是通过SSH设置一个,并将其绑定到一些本地端口,这些数据通过SSH提供,通过网关提

有一些开发需要在一些远程设备上完成。幸运的是,我可以访问shell,但我需要通过一个将AllowTcpForwarding设置为false的网关

我在文档中看到了一个高峰,上面写着:

AllowTcpForwarding指定是否允许TCP转发。这个 默认值为“是”。请注意,禁用TCP转发不会 提高安全性,除非用户也被拒绝shell访问,因为 可以随时安装自己的货代

我将如何安装(或建造)自己的货运代理?我这里的目标是通过SSH设置一个,并将其绑定到一些本地端口,这些数据通过SSH提供,通过网关提供,然后绑定到实际运行代码的开发框

我知道我可以通过执行以下操作ssh到我的远程机箱:

ssh -t user1@gateway ssh user2@devbox
但显然,pycharm中没有此选项。我必须在当地开一个这样的港口

ssh -p 12345 localhost
(or variant)

请帮我接user2@devbox. 这将允许我将远程解释器配置为使用
localhost
上的端口
12345
连接到远程框。

如果您有合法的需要通过此网关服务器进行隧道连接,您应该试着与网关管理员交谈,以找到一种可接受的方式来完成工作。找到一种解决服务器配置问题的方法不会改变这样一个事实,即您可能违反了预期遵循的策略。尽管如此:

客户端和服务器之间的SSH连接支持多个独立的数据流,称为通道。端口转发使用名为的通道类型。端口转发操作包括四个部分:

  • ssh客户端(连接到ssh服务器)绑定到TCP端口并侦听连接
  • 当某个东西连接到客户端正在侦听的端口时,客户端向服务器发送请求以打开“direct tcpip”通道。来自客户端的请求指定通道应连接到的主机和端口
  • 远程系统上的ssh服务器与指定的主机和端口建立TCP连接
  • ssh客户端在直接tcpip通道和本地TCP连接之间中继数据
  • ssh服务器在直接tcpip通道和远程TCP连接之间中继数据
  • 如果服务器已配置为不允许TCP转发,则它将以错误响应来自客户端的任何直接tcpip通道请求。为了解决这个问题,正如SSH文档所暗示的,客户端需要通过允许客户端打开的其他通道类型传递这些转发请求,并且需要在远程系统上运行一些进程,执行上面的步骤3和步骤5,这些步骤通常由远程SSH服务器完成

    我不知道有什么现成的解决方案。这里的工作范围是:

  • 开发一个可安装在网关上的程序,以执行转发操作的远程部分。程序必须能够与目标主机和端口建立TCP连接,然后在TCP连接和SSH连接之间中继数据

  • 开发一个自定义ssh客户端,该客户端可以执行转发操作的本地部分。它需要绑定到本地TCP端口并侦听连接。当有东西连接时,客户端必须打开到服务器的通道,调用远程程序连接到隧道目标,然后在TCP连接和ssh通道之间中继数据


  • 一种可行的方法是,自定义ssh客户端为每个转发的连接打开一个通道,然后在远程系统上调用类似的程序。Netcat需要连接到正向操作的目标,然后在其标准输入/输出和正向目标之间中继数据。如果无法在网关上安装netcat,可以使用perl、python、java、C或网关上可用的任何其他语言编写自定义程序,并允许打开TCP连接。

    网关上可能安装了一些程序,可用于将stdio转发到远程网络端口。例如,查找
    corkscrew
    netcat
    nc
    socat
    proxytunnel

    然后,如果网关上有Perl可用,您可以使用我不久前编写的一个可用的行程序来解决相同的问题(代码已解释)


    最后,您还可以使用
    ProxyCommand
    设置或PyCharm使用的一些等效设置运行到目标机器的SSH连接。

    编程问题也是如此,而不是关于使用或配置Linux的问题。SuperUser.com或unix.stackexchange.com是回答此类问题的更好地方。标题是
    allowtcpfrowarding
    ,该问题指的是
    AllowAgentForwarding
    。这是一篇内容丰富的帖子。谢谢你提供的全面信息。