デフォルトのポートを介してsshを許可しないネットワークファイアウォールの背後にいます。そのため、bzrブランチをリポジトリにプッシュできません。何らかの方法でポート80を介してsshをプロキシして、ブランチをプッシュできるかどうかを知りたいと思います。
corkscrew でできることを聞きましたが、正確にそれを行う方法はわかりません。
あなたがそれを可能にする動作中のプロキシサーバーを知っているなら、それらについて言及してください。
優れた企業ファイアウォールは、ポートに関係なくトラフィックを検査するため、ポートを変更しても機能しない場合があります。
サーバーを制御し、それでも試してみたい場合は、sshdポートをポート80に変更できます。Warning他に何か実行している場合ポート80(サーバー上)ではこれは機能せず、サーバーへのSSHアクセスが完全に失われる可能性があります!
/etc/ssh/sshd_config
を編集し、Port
を80
に変更する必要があります。次に実行する
Sudo restart ssh
そして接続します:
ssh user@Host -p80
Bzrパスは次のようになります:bzr+ssh://Host:80/path/
別の方法は、WebDavを使用することです。これはすべてポート80で発生するため、ファイアウォールの問題を完全に回避する必要がありますが、Apacheを実行していくつかのことをセットアップする必要があります。
VPNはオプションかもしれませんが、ssh
がロックアウトされている場合、それも除外されると思います。
ネットワーク管理者とWordを持ちたいだけかもしれません。あなたは何かをする必要があり、彼らはあなたを止めています。 ssh
をブロックする理由がある場合、それをかなり否定的に回避しようとする極端な試みが表示される可能性があります...
要するに、彼らと話をする方が安全かもしれません。
ファイアウォールで許可されている場合、任意のポートに対してsshを実行できますが、そのためにはsshサーバーがそのポートでリッスンしている必要があります。ポート80は、ファイアウォールを備えたほとんどの場所でそのポート上のトラフィックを分析し、HTTP以外のものをすべてブロックするため、機能しそうにありません。ただし、通常はHTTPSポートであるポート443は、多くの場合機能します。これは、SSHとHTTPSがフィルタリングソフトウェアに互いによく似ているため、SSHセッションがHTTPSセッションのように見えるためです。 (HTTPSとSSHを区別することは可能であるため、ファイアウォールが十分に洗練されている場合、これは機能しません。)
サーバーを制御できる場合は、22(通常のsshポート)に加えてポート443でリッスンするようにします。 /etc/ssh/sshd_config
でポートを設定できます:行を追加します
Port 443
既にあるはずのPort 22
に加えて。これは、sshサーバーがHTTPSサーバーでもないことを前提としていることに注意してください。その場合は、ファイアウォールで使用できる別のポートを見つけるか、別のsshサーバーを見つける必要があります(以下の転送を参照)。
WebブラウザでWebプロキシを設定する必要がない場合は、直接接続してみてください:
ssh -p 443 myserver.example.com
それが機能する場合は、~/.ssh/config
でエイリアスを定義します。
Host myserver
HostName myserver.example.com
Port 443
WebブラウザーでWebプロキシを設定する必要がある場合は、sshにプロキシを経由するように指示します。 corkscrew をインストールします。 ~/.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でリッスンしており、そのホストを制御できる場合、SSH接続を受け入れて転送するようにこのApacheをセットアップできます。 Tunneling SSH over HTTP(S) を参照してください。
ここで洗練されたソリューションを読んだばかりです。
http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html
ホームサーバーがポート80でWebサーバーを実行している場合でも、ポート80でSSHホームを使用できます。
ホームサーバーがApacheを実行していると仮定します。このアイデアには、サーバーでmod_proxyを有効にしてから、localhost(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>
これで、localhostへのHTTP接続要求を行うことができ、ウェブサーバーがトンネルを確立します。すべてのトラフィックがプロキシを通過することを確認するだけです。
ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com
SSHへのlocalhost接続が特権を持たないことを確認してください(他人の侵入を防ぐため)
これは、ポート80のみを許可するルーターの背後にいる場合に機能するはずです。
プロキシの背後にいる場合(したがって、Webを取得するにはブラウザでプロキシを設定する必要があります)、まず自分のホストへのトンネルを確立し、次にこのトンネル内で別のCONNECT要求を発行してホストに到達する必要があります。これはより洗練されており、2つのnetcatを使用する必要があります。
すべてが可能ですが、あなた自身のリスクのために...
更新:
または、単に、ブラウザを介してSSHを提供するWebアプリケーションを使用するだけです。 http://en.wikipedia.org/wiki/Web-based_SSH
申し訳ありませんが、悪魔の擁護者を演じなければなりません。
おそらくこれを行う理由があることを知っていますが、ネットワーク/ファイアウォール管理者が探している特定のポートを開けないのはなぜですか?セキュリティの観点から、web-inspectが何かを見逃す可能性を取りたいですか? stdトラフィック用にポート80をバイパスするように構成されており、あなたが危害を加えている場合。
ポイントツーポイントvpnがより安全なオプションである場合がある上記のいくつかの提案に同意します。繰り返しますが、セキュリティの観点から、セキュリティポリシーを本当にバイパスしている理由と、アクセスのためにサーバーをdmzまたはバックボーンに配置できない理由を知りたいと思います。私だけ。幸運を。
サーバーを制御してSSHポートをポート80に変更できない場合、またはファイアウォールがポート80を介したそのようなデータの転送をブロックしているためにポート80でSSHを実行できない場合は、TORを試すことができます。
TORは巨大なネットワークです。お使いのコンピューターは、SSHサーバーに到達するまで、世界中の別のコンピューターに接続します。これはすべてファイアウォールに対応しており、ポート443で発生します(会社はこれをブロックしませんが、そうではありません。文字通り巨大なプロキシまたはVPNであり、暗号化されています。これにより、任意のポートの任意のホスト(ポート22のサーバーのSSH)にアクセスできます。
www.torproject.org でオンラインでご覧ください。