web-dev-qa-db-ja.com

ポート80を介してSSH接続することは可能ですか?

デフォルトのポートを介してsshを許可しないネットワークファイアウォールの背後にいます。そのため、bzrブランチをリポジトリにプッシュできません。何らかの方法でポート80を介してsshをプロキシして、ブランチをプッシュできるかどうかを知りたいと思います。

corkscrew でできることを聞きましたが、正確にそれを行う方法はわかりません。

あなたがそれを可能にする動作中のプロキシサーバーを知っているなら、それらについて言及してください。

19
jokerdino

優れた企業ファイアウォールは、ポートに関係なくトラフィックを検査するため、ポートを変更しても機能しない場合があります。

サーバーを制御し、それでも試してみたい場合は、sshdポートをポート80に変更できます。Warning他に何か実行している場合ポート80(サーバー上)ではこれは機能せず、サーバーへのSSHアクセスが完全に失われる可能性があります!

/etc/ssh/sshd_configを編集し、Port80に変更する必要があります。次に実行する

Sudo restart ssh

そして接続します:

ssh user@Host -p80

Bzrパスは次のようになります:bzr+ssh://Host:80/path/


別の方法は、WebDavを使用することです。これはすべてポート80で発生するため、ファイアウォールの問題を完全に回避する必要がありますが、Apacheを実行していくつかのことをセットアップする必要があります。

  1. WebDavをインストールする
  2. ブランチを適切な場所に移動します
  3. bzr-webdav プラグインを使用して接続します

VPNはオプションかもしれませんが、sshがロックアウトされている場合、それも除外されると思います。

ネットワーク管理者とWordを持ちたいだけかもしれません。あなたは何かをする必要があり、彼らはあなたを止めています。 sshをブロックする理由がある場合、それをかなり否定的に回避しようとする極端な試みが表示される可能性があります...

要するに、彼らと話をする方が安全かもしれません。

18
Oli

プロキシ経由の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

SSH over SSH

上記の手法のいずれかで外部のマシンにアクセスできるが、関心のあるマシンには到達できない場合は、それを使用して接続を転送します。 mygatewayというマシンにsshでき、mytargetのSSHサーバーに到達したい場合、mygatewaynetcat-openbsd をインストールします(または、Ubuntuを実行していない場合は、ncコマンドがあることを確認します) 。これを~/.ssh/configに入れてください:

Host mytarget
ProxyCommand ssh mygateway nc %h %p

ApacheへのSSH

接続したいホストがすでにApacheを実行しており、ポート443でリッスンしており、そのホストを制御できる場合、SSH接続を受け入れて転送するようにこのApacheをセットアップできます。 Tunneling SSH over HTTP(S) を参照してください。

15
Gilles

ここで洗練されたソリューションを読んだばかりです。

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

3
Calmarius

申し訳ありませんが、悪魔の擁護者を演じなければなりません。

おそらくこれを行う理由があることを知っていますが、ネットワーク/ファイアウォール管理者が探している特定のポートを開けないのはなぜですか?セキュリティの観点から、web-inspectが何かを見逃す可能性を取りたいですか? stdトラフィック用にポート80をバイパスするように構成されており、あなたが危害を加えている場合。

ポイントツーポイントvpnがより安全なオプションである場合がある上記のいくつかの提案に同意します。繰り返しますが、セキュリティの観点から、セキュリティポリシーを本当にバイパスしている理由と、アクセスのためにサーバーをdmzまたはバックボーンに配置できない理由を知りたいと思います。私だけ。幸運を。

2
Solarfinder

サーバーを制御してSSHポートをポート80に変更できない場合、またはファイアウォールがポート80を介したそのようなデータの転送をブロックしているためにポート80でSSHを実行できない場合は、TORを試すことができます。

TORは巨大なネットワークです。お使いのコンピューターは、SSHサーバーに到達するまで、世界中の別のコンピューターに接続します。これはすべてファイアウォールに対応しており、ポート443で発生します(会社はこれをブロックしませんが、そうではありません。文字通り巨大なプロキシまたはVPNであり、暗号化されています。これにより、任意のポートの任意のホスト(ポート22のサーバーのSSH)にアクセスできます。

www.torproject.org でオンラインでご覧ください。

2
Robbietjuh