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


20

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

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

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


2
man sshport:host:hostportを明らかにします。だからssh 80:server.comやってみてください。
-MarkovCh1

これは、-Lまたは-Rを介してトンネルを設定するためのものです。そのため、トンネルを通すには別のボックスが必要です。
セシウム

回答:


19

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

あなたは、サーバーを管理している、そしてまだそれを試してみたい場合は、ポート80にsshdのポートを変更することができます警告します(サーバー上の)ポート80上で実行されている何かを持っている場合、これは動作しませんし、おそらく完全にあなたを意味しますサーバーへのSSHアクセスを失います!

編集/etc/ssh/sshd_configしてに変更Portする必要があります80。次に実行する

sudo restart ssh

そして接続します:

ssh user@host -p80

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


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

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

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

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

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


7
+1して、IT部門とニーズについて話し合う。私を含む多くの環境では、このタイプのアクティビティが終了の理由になります。
パンサー

1
また、sshサーバーに別のポートをリッスンさせる場合Port/etc/ssh/sshd_configファイルの各ポートに1行ずつ2 行を持たせることで、ポート22と80の両方にリッスンさせることができます。
アゼンデール

リストを作成することは避けます(リストは長く、リスト上のいくつかの項目の議論は非常に政治的に早くなる可能性があります)が、この質問は忠実に実装されている会社のポリシーを回避しようとする従業員の状況以外の多くの状況をカバーします会社独自のIT部門。私はITで仕事のニーズを話し合う人たちのすべてですが、それは常に当てはまるわけではなく、IT部門は「大丈夫ですが、私たちはあなたに対応するために何も変更していません」と答えさえします。それとは別に、ポート22がVPNによってブロックされていないことは非常にありそうなので、試してみる価値があると思います。
エリアケイガン

@Pantherそれから、一部の人々は、その企業体制を終わらせることさえ幸せになるでしょう。
NeverEndingQueue

15

プロキシ経由の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にプロキシを経由するように指示します。コルク栓抜き取り付けます。で、このようなエイリアスを定義します~/.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

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

Host mytarget
ProxyCommand ssh mygateway nc %h %p

ApacheへのSSH

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


また、httpsにコルク抜きの代わりにncを使用することもできますか?stackoverflow.com/a/15577758/32453
rogerdpack 14年

3

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

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


2

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

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

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


2

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

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

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


2
ネットワーク管理者と話をすることは常に可能であるとは限らず、ネットワーク管理者が常に合理的であるとは限りません。
ジェレミービチャ

たとえば、カフェに座ってWiFiに接続しているが、管理者がアクセスを制限している場合(そして今すぐ接続する必要があります)。
古いufo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.