我正在尝试通过 corkscrew 让 ssh 使用 http 代理。
这是错误:
[echox@archbox:~] % ssh somehost.tld
zsh: No such file or directory
ssh_exchange_identification: Connection closed by remote host
这是~/.ssh/config的内容
Host *
ProxyCommand /usr/bin/corkscrew http-proxy.some.proxy.tld 8080 %h %p
我敢打赌 ProxyCommand 没有找到,但/usr/bin/corkscrew
正在工作,它也在我的路径中。corkscrew
没有路径也不起作用。
[echox@archbox:~] % corkscrew http-proxy.some.proxy.tld 8080 some.ssh.host.tld 22
直接调用效果很好。
任何想法?
答案1
好吧,我完全忘记了-vvv
:-) 这是输出:
OpenSSH_5.6p1, OpenSSL 1.0.0a 1 Jun 2010
debug1: Reading configuration data /home/echox/.ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec /usr/bin/corkscrew http-proxy.proxy.tld 8080 somehost.tld 22
debug1: permanently_drop_suid: 1000
zsh: No such file or directory
[..]
ssh_exchange_identification: Connection closed by remote host
关键是与 的行ssh_connect: needpriv 0
。我忘记将我的用户添加到 /etc/group 中的网络组。该连接适用于 root,并且在将用户添加到网络后,它现在也适用于他。
以前没有开瓶器的连接也可以工作。有人知道这个“安全”设置存储在哪里吗?我在 arch linux wiki、/etc/man ssh
以及检查网络组的 corkscrew 源 / corkscrew 文档中找不到任何内容。
答案2
有同样的问题(“/ bin / bash:/ home / thor / bin / connect -4 -S localhost:9050 void 22:没有这样的文件或目录”)
通过更改 ~/.ssh/config 来修复
ProxyCommand "~/bin/connect -4 -S localhost:9050 %h %p"
到
ProxyCommand ~/bin/connect -4 -S localhost:9050 %h %p
(删除“”)
至于为什么会解决这个问题...我不知道。
哎呀,刚刚注意到OP在配置文件中甚至没有引号...因为这仍然相关,我将在这里留下答案供你们投票/反对。
答案3
我对开瓶器一无所知,但我通过使用 putty 的 http 代理成功使用了 ssh。
也许它可以代替这项工作?
编辑 putty 是一个基于 X 的程序,因此它无法在所有情况下提供帮助。
但是如果你想在 ubuntu 之类的东西上安装 putty,你可以直接 apt 它。
sudo aptitude install putty
答案4
检查可能是一件愚蠢的事情,但开瓶器取决于您路径中的“netcat”。当然,大多数系统默认安装了 netcat,但其中一些系统也没有链接到“netcat”的主二进制文件“nc”。 Corkscrew 依赖于能够调用“netcat”,而不是“nc”。至少我有与您描述的相同的症状,并且只需将 nc 符号链接到 netcat 即可修复它。