如何将socks代理添加到ssh配置文件中?

73

我知道如何在命令行上将SOCKS代理转发,示例如下

ssh -D port_number user@host

这个方法很好,但我希望能够将此转发放入我的SSH config文件中。但是我没有找到任何有用的信息或教程。

我的config文件中有很多普通的SSH配置文件,因此我希望将转发附加到SSH配置文件中。


4
好问题,但也许更适合http://unix.stackexchange.com/。 - mnagel
3个回答

114
使用配置设置DynamicForward。以下是一个快速示例,它应该是这样的:
Host example.com
    User username
    DynamicForward 8080

如果只给出DynamicForward选项一个端口号,那么它将绑定到localhost:port
您可以添加一个特定的IP地址,以便将其绑定到除本地主机以外的地址。使用*:8080将代理绑定到盒子上的所有IP地址。
要使用IPv6地址,请将地址括在方括号中:[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8080 有关详细信息,请参阅{{link1:ssh_config手册页}}(键入man ssh_config)。

你能解释一下“端口22”和IdentityFile的目的吗?为什么是22而不是23呢? - shuhalo
@shuhalo:其他选项属于特定于该ssh连接的配置参数,因此可以设置为任何需要以便连接到远程服务器。与这个问题相关的重要参数是DynamicForward 8080 - Meetai.com
2
@shuhalo,22端口是SSH连接的默认端口,但您可以在服务器上的sshd配置文件中进行配置。 - Maxim Mazurok
@shuhalo,我从这个答案中删除了默认值,因为它们会让人感到困惑,并且对于这个答案来说是不必要的。但是如果要更改端口22,则需要在客户端和服务器上都进行设置;在服务器端,通常在/etc/ssh/sshd_config中设置为“Port 22”。 - fatal_error

1

我不建议使用socat,因为它只支持socks4。但是你可以使用ncat。

  1. 安装ncat
  2. 在你的ssh配置文件中添加以下内容:ProxyCommand ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p

如果不起作用,你可能需要检查ncat选项


这个回答是针对不同的问题的;它允许您使用SOCKS5代理SSH到另一台服务器,但OP问如何SSH到另一台服务器并在本地设置一个SOCKS服务器,通过远程SSH服务器转发请求。(请参阅man ssh手册并搜索SOCKS)。 - fatal_error

-10

这就是它的实现方式:

Host server-fwd
Hostname a.b.c.d
User username
Port 22
LocalForward localhost:AAAA localhost:DD
LocalForward localhost:BBBB localhost:EEE
LocalForward localhost:CCCC localhost:FFFF

将“server-fwd”更改为您喜欢的任何名称,将“a.b.c.d”更改为您要连接的IP,将“username”更改为您的帐户名称,如果需要,可以更改端口号。

LocalForward行是您一直在寻找的行。中间列(即AAAA,BBBB和CCCC)是您从ssh命令运行的系统上的端口。右列(即DD,EEE和FFFF)是您要连接到的服务器上的端口。在两种情况下都是本地主机,因为在第一种情况下,它是在本地运行ssh命令,而在第二种情况下,它是相对于您刚刚登录的服务器。

是的,我经常使用这个。;)


2
你知道吗,你所描述的并不是我要求的。你描述的是本地端口转发,而我问的是动态socks代理转发。 - yarun can
本地的Socks代理处理其他位置的隧道或者仅通过远程Socks代理进行隧道? 因为答案取决于哪一个。但真正简短的版本是我给出的是后者的答案,前者需要通过像socat这样的程序进行传输。如果是前者,我也可以挖出样本配置。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接