我正在尝试使用我的服务器作为 ssh 的“代理”。但是,使用
ssh -D localhost:8000 user@myserver
不起作用。
我在多台机器上用 ssh 和 putty 测试了这一点 - 连接很好,但当我相应地设置浏览器设置时,我只收到错误“连接已重置”。我尝试使用 wireshark 监控流量,但我甚至没有看到一些隧道流量。我明确设置AllowTcpForwarding
为“是”,但我仍然无法使用隧道。
在详细模式下运行 ssh 时,我没有收到任何错误,但是
debug1: Connection to port 8000 forwarding to socks port 0 requested.
debug1: channel 3: new [dynamic-tcpip]
debug1: channel 3: free: dynamic-tcpip, nchannels 4
我究竟做错了什么?
答案1
这是一个老话题,但我认为值得发布可能的解决方案。
我在使用多个浏览器时都遇到了同样的问题,结果发现是配置问题。如果是这样,以下命令应该可以工作并显示远程计算机的 IP 地址:
links -socks-proxy localhost:8000 www.myipaddress.com
问题的第一条评论是正确的,即浏览器可能会尝试使用 HTTP 代理而不是 SOCKS 代理,在这种情况下,我看到的输出与ssh
OP 的帖子完全相同。虽然我确实设置了 SOCKS 代理,但问题是我没有取消设置 HTTP 代理完成后,一切都开始按预期工作。
答案2
正确的命令是:
ssh user@server -D 8000
如果仍然无法连接,请检查是否有其他进程正在使用此端口。最简单的方法是:
netstat --listen |grep 8000
如果是这种情况,只需使用另一个端口。
答案3
-g
我遇到了同样的问题,我的解决方法是在命令中添加选项:
$ ssh -D 12324 localhost:8000 user@myserver -g
答案4
sshd_config
另外在 ssh 服务器上启用:
PermitTunnel yes
而且当然:
service ssh restart