【问题标题】:How do I fix my SSH configuration to use git behind an SSH proxy?如何修复我的 SSH 配置以在 SSH 代理后面使用 git?
【发布时间】:2015-09-19 17:00:29
【问题描述】:

所以我目前的情况是,我有两台 SSH 服务器,它们都必须通过运行 Tomato 的 Linux 路由器后面的端口 443 提供服务。

为了完成这项工作,我在路由器上有一个 SSH 服务器,它充当我想要实际连接的任何地方的中继。

我要连接的机器上的.ssh/config 文件如下所示:

Host destination
  HostName <internal IP of destination behind router>
  User gogs
  Port 22
  IdentityFile "<my identity file path>"
  ProxyCommand ssh -q relay -W %h:%p
  IdentitiesOnly yes

Host relay
  HostName <my domain name>
  User relay
  Port 443
  IdentityFile "<my identity file path>"

所以这对 SSH、SCP 甚至 git clone 都适用,但实际上其他 git 命令似乎都不起作用。

当我在ProxyCommand 上没有-q 标志的情况下执行get fetch 时,它会挂起一秒钟并显示Killed by signal 1

我见过的所有其他解决方案都需要使用不同的代理命令,例如 nc 命令或 corkscrew。我拥有的路由器几乎仅限于它附带的命令,并且这两个都不可用。

关于如何使这项工作发挥作用的任何想法,或者至少解释为什么我正在尝试做的事情不起作用?

谢谢!

【问题讨论】:

  • 你试过netcat吗? (nc) 代理命令版本?
  • 感谢您的建议。我有路由器设置,所以relay 用户的shell 不能使用,所以配置它以允许nc 命令是相当复杂的。无论如何,事实证明我的配置确实有效,我在诊断问题时犯了一个错误:)

标签: linux git ssh proxy


【解决方案1】:

原来我弄错了,它实际上一直在工作。 Killed by signal 1 在 git 命令行中是正常的,除非您将 -q 标志提供给 SSH ProxyCommand,而我最初没有。

混淆是因为我使用的是 IntelliJ IDE。 IntelliJ 默认使用它自己的内置 SSH 客户端,它在不知不觉中没有考虑到我的.ssh/config。切换到本机 SSH 安装解决了所有问题。

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2021-03-07
    • 2014-06-26
    • 2014-04-09
    • 2014-11-04
    • 1970-01-01
    • 2018-08-02
    • 2012-09-07
    相关资源
    最近更新 更多