会社のファイアウォールの背後にLinux Fedora21クライアントラップトップがあり(httpおよびhttpsポートは通過できますが、ssh 22は通過できません)、自宅に自分のルーターの背後にLinux Fedora21サーバーがあります。ホームサーバーのパブリックIPアドレスを指定すると、httpsによるブラウジングが機能します(ホームルーターを構成したため)
Http/sポート経由でホームサーバーにssh(リモートシェル)することはできますか?
corkscrew
というツールを見ました。それは役に立ちますか?
opensshd
およびhttpd
はホームサーバーで実行されます。他に何が設定を必要としますか?
何が可能かは、ファイアウォールが許可するものによって異なります。
一部のファイアウォールは、単純な方法でポート443を許可します。その場合、ホームサーバーに到達する最も簡単な方法は、ポート443でSSH接続をリッスンすることです。マシンがインターネットに直接接続されている場合は、単にPort 443
を/etc/ssh/sshd_config
または/etc/sshd_config
に、Port 22
と書かれた行のすぐ下に追加します。マシンが着信接続をリダイレクトするルーター/ファイアウォールの背後にある場合、着信接続をポート443からサーバーのポート22にリダイレクトします。
iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22
ここで、wan0
はルーターのWAN=インターフェースであり、10.1.2.3はホームネットワーク上のサーバーのIPアドレスです。
ホームサーバーがポート443でHTTPS接続とSSH接続の両方をリッスンすることを許可する場合、それは可能です— SSHとHTTPSトラフィックは簡単に区別できます(SSHではサーバーが最初に通信し、HTTPとHTTPSではクライアントが通信します最初)。 http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html および http://wrouesnel.github.io/articles/Setting%を参照してください20up%20sshttp /sshttp でこれを設定する方法のチュートリアル、および Webサーバー(nginx)がこれらのポートで実行されているときに、ポート80または443でSSHを使用する =
一部のファイアウォールは、すべての発信接続をブロックしますが、プロキシを介したWebの閲覧を許可します。これにより、 HTTP CONNECT
メソッドがファイアウォールの穴を効果的に突き抜けます。 CONNECT
メソッドは特定のポートに制限されている可能性があるため、上記のように、これをポート443でのリスニングと組み合わせる必要がある場合があります。
SSHをプロキシ経由で実行するには、 corkscrew のようなツールを使用できます。 Webプロキシが~/.ssh/config
の場合は、http://web-proxy.work.example.com:3128
に以下のようなProxyCommand
行を追加します。
Host home
HostName mmm.dyndns.example.net
ProxyCommand corkscrew web-proxy.work.example.com 3128 %h %p
一部のファイアウォールは、ポート443でも、SSHトラフィックを許可しません。これらに対処するには、ファイアウォールが通過するものにSSHを偽装またはトンネルする必要があります。 proxytunnel を使用してこれを行うチュートリアルについては、 http://dag.wiee.rs/howto/ssh-http-tunneling/ を参照してください。
同じポート443でHTTPSサーバーとSSHdサーバーの両方を実行する場合は、 sslh を使用できます。
別の方法を試すことができます。サーバーをsshできるWebサーバーをセットアップします。