如何使用ssh创建到特定端口的本地远程本地隧道


1

我可以通过以下方式建立从我的Windows计算机(localhost - eth1)到我的linux计算机(remotehost - eth0)的ssh连接:

ssh user@192.168.1.100

而不是使用它,因为我使用非标准端口,我必须指定端口:

ssh -p remoteSSH user@192.168.1.100

然后我将http和ssl转发到remotehost的http和ssl端口。我有一些我想在linux机器上使用的服务,所以我用它:

ssh -L 80:127.0.0.1:80
ssh -L 443:127.0.0.1:443

最后,我尝试“安全地”反转从(localhost)到(remotehost)并返回到(localhost)的流量。但是,通过此连接,我需要socks代理为127.0.0.1:proxy1。我成功创建了一个非socks代理,通过上面的转发方法将proxy1指向(localhost)上的[特定端口aka proxy2],但我试图避免不断修改html文件指向代理端口。

当我使用putty时,除了动态的socks连接之外,我连接了所有上述连接,这只能转发标准的http / s流量。我不想为互联网创建代理。我已经停止使用putty,因为它会丢弃连接,并且只要转发流量就会崩溃。后者是一个已知的错误:

http://www.chiark.greenend.org.uk/~sgtatham/putty/changes.html

These features were new in beta 0.61 (released 2011-07-12):
    Bug fix: corruption of port forwarding is fixed (we think).

These features were new in beta 0.59 (released 2007-01-24):
    Bug fix: SSH-1 connections tended to crash, particularly when using port forwarding.

These features were new in beta 0.58 (released 2005-04-05): 
    Fixed crashing bug with remote port forwarding.

These features were new in beta 0.53 (released 2002-10-01): 
    Various bug fixes, including (with luck) much greater stability in high-traffic port forwarding situations.

所以,在Windows框中,我移动到cygwin for openssh。到目前为止我提出的命令是:

ssh -t -t -L 80:127.0.0.1:80 -L 443:127.0.0.1:443 -p remoteSSH user@192.168.1.100 -R proxy1:127.0.0.1:randomport "ssh -D randomport 127.0.0.1"

要测试从proxy1到proxy2的连接,在Firefox中我设置:

HTTP Proxy:                 Port:
SSL Proxy:                  Port:
FTP Proxy:                  Port:
SOCKS Host: 127.0.0.1       Port: proxy1
SOCKSv5
No Proxy for:

我得到一个回复​​说代理服务器拒绝连接。我在Windows框中创建了规则以允许连接。我禁用了我的Windows防火墙,并通过以下方式允许在linux框中的iptables中进行连接:

$IPTABLES -A OUTPUT -o eth1 -p tcp -m tcp -s 192.168.1.100 -d 192.168.1.200 --dport randomport -j ACCEPT

iptables已经设置为允许本地流量。我使用密码保护的基于主机的私钥认证。我有syslog-ng(cygwin)日志记录ssh。

也许,作为问题的替代或补充,有人可以指导我使用Linux和/或Windows工具来帮助我诊断问题。对于Windows,我有带有Sysinternals Suite和Nirsoft Utilities的Windows系统控制中心。Windows系统:Windows 7. Linux:Slackware 64

http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

http://www.kls-soft.com/wscc/

http://www.nirsoft.net/instinfo.html

Answers:


0

我决定使用经过时间考验的反复试验方法。这是允许访问proxy2的原因:

ssh -t -t -D proxy1 -R proxy2:127.0.0.1:proxy2 -p remoteSSH user@192.168.1.100

在Firefox中,我现在可以输入:

https://127.0.0.1:proxy2

它将通过隧道(proxy1)发送连接到本地代理(proxy2),实质上成为到特定端口的本地远程本地隧道。

虽然可以通过proxy1访问proxy2,但允许proxy1访问Internet。为了限制允许代理访问的内容,我根据手册页在192.168.1.100的远程主机的sshd_config文件中添加了一个PermitOpen条目:

http://www.openssh.com/cgi-bin/man.cgi?query=sshd_config

PermitOpen 127.0.0.1:proxy2 127.0.0.1:80 127.0.0.1:443
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.