我听说corkscrew可以做到这一点,但我不确定具体如何操作。
如果你知道任何可用的代理服务器可以实现这一功能,请务必提及。
sudo restart ssh
ssh user@host -p80
您的bzr路径可能如下所示:bzr+ssh://host:80/path/
使用VPN可能是一个选择,但如果ssh
被锁定,我预计也会被排除在外。
你可能只想与网络管理员交谈。你需要做一些事情,而他们正在阻止你。如果他们有阻止ssh
的理由,他们可能会对任何试图绕过它的极端尝试持否定态度...
简而言之,与他们交谈可能更安全。
/etc/ssh/sshd_config
文件中有两个Port
行,每个端口一个,从而使其同时在22号和80号端口上监听。 - Azendale如果防火墙允许,您可以在任何端口上运行ssh,但这需要ssh服务器在该端口上监听。端口80不太可能工作,因为大多数有防火墙的地方会分析该端口上的流量,并阻止任何不是HTTP的内容。但通常情况下,端口443(通常是HTTPS端口)可以工作,因为SSH和HTTPS在过滤软件中看起来非常相似,所以您的SSH会话将看起来像一个HTTPS会话。(如果防火墙足够复杂,它是可以区分HTTPS和SSH的,所以这种方法可能不适用。)
如果您对服务器有控制权,请使其除了22号端口(正常的ssh端口)外,还监听443号端口。您可以在/etc/ssh/sshd_config
中配置端口:添加一行
Port 443
端口22
之外,还需要注意的是,这假设ssh服务器不是HTTPS服务器。如果是的话,您需要找到另一个防火墙允许使用的端口,或者找到另一个ssh服务器(参见下面的转发)。ssh -p 443 myserver.example.com
~/.ssh/config
中定义一个别名:Host myserver
HostName myserver.example.com
Port 443
~/.ssh/config
中定义一个别名,其中http://proxy.acme.com:3128/
是用于HTTPS到外部的代理(替换为正确的主机名和端口)。Host myserver
HostName myserver.example.com
Port 443
ProxyCommand /usr/bin/corkscrew proxy.acme.com 3128 %h %p
如果您可以通过上述技术之一访问外部机器,但无法访问您感兴趣的机器,请使用该方法来转发连接。假设您可以通过名为mygateway
的机器进行ssh连接,并且您想要连接到mytarget
上的SSH服务器,请在mygateway
上安装netcat-openbsd(或者,如果它没有运行Ubuntu,请确保它具有nc
命令)。将以下内容添加到您的~/.ssh/config
文件中:
Host mytarget
ProxyCommand ssh mygateway nc %h %p
如果您想要连接的主机已经运行着Apache并且监听在443端口上,并且您对该主机有控制权,您可以设置Apache接受SSH连接并将其转发。请参考通过HTTP(S)隧道传输SSH。
http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html
即使你的家庭服务器在端口80上运行一个Web服务器,你仍然可以通过端口80 SSH回家。
假设家庭服务器运行Apache。这个想法涉及在你的服务器上启用mod_proxy,然后将其限制为只能连接到本地主机(proxy.conf):
<IfModule mod_proxy.c>
ProxyRequests On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Deny from all
</Proxy>
<Proxy localhost>
Allow from all
</Proxy>
AllowCONNECT 22
ProxyVia On
</IfModule>
ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com
确保本机连接SSH时不具有特权(以避免让陌生人进入...)
如果您在仅允许端口80出站的路由器后面,这应该可以工作。
如果您在代理服务器后面(因此需要在浏览器中设置代理才能获得网络),您将需要首先建立到自己主机的隧道,然后在该隧道内发出另一个CONNECT请求以访问您的主机。这更加复杂,您需要使用两个netcat工具。
一切皆有可能,但请自行承担风险...
更新:
或者,简单地使用一个通过浏览器提供SSH服务的Web应用程序。http://en.wikipedia.org/wiki/Web-based_SSH
对不起,我不得不充当魔鬼的拥护者。
我知道可能有个理由这样做,但是为什么你的网络/防火墙管理员不开放你要找的特定端口呢?从安全角度来看,你愿意冒险让网页检查漏过什么吗?如果配置为绕过标准流量的80端口,你就置自己于危险。
我同意上面的一些建议,点对点VPN可能是更安全的选择。再次强调,从安全角度考虑,我很想知道你真正绕过安全策略的原因,以及为什么不能将服务器放在DMZ或骨干网中进行访问。仅代表个人观点,祝你好运。
man ssh
显示了端口:主机:主机端口。所以尝试使用ssh 80:server.com
或类似的命令。 - MarkovCh1