web-dev-qa-db-ja.com

SSHを介したローカルWebサーバーのトンネリング

家にいないときに、ローカルWebサーバーhttp://192.168.0.186:3000にアクセスしたいのですが。メンテナンスやセキュリティの専門家でないと安全だとは思わないので、インターネットで公開したくありません。私はかつてdyndnsを使用してApacheサーバーでそれを行いましたが、同じ日にログはハッカーの試みでいっぱいでした。オペレーティングシステムからC:/がいっぱいであるというメッセージを受け取ったとき、何かがおかしいことに気づきました。

私が考えたのは、SSHトンネルを使用することです。したがって、ローカルマシンで実行されているSSHサーバーが必要だと思います。私はすでに1つ持っています:192.168.0.186:22。私はgitbashからssh [email protected]に接続するために使用します。ルーターのファイアウォールでもポート22を開く必要があると思います。そうすれば、インターネット経由でSSHサーバーにアクセスできるようになります。

クライアントマシンには、現在Windows 7、Windows 8.1、Fedora23があります。 Windowsでは、可能であれば、PuTTYの代わりにgitbashなどを使用したいと思います。これに関連するすべてをバックグラウンドで自動的に実行したいので、ホームサーバーに接続するたびにPuTTYを起動することはできません。必要に応じて、クライアント向けの簡単なバックグラウンドサービスを作成できます。

私の質問:

  1. HTTPリクエストをローカルウェブサーバーに転送するようにSSHサーバーを設定するにはどうすればよいですか?
  2. SSHサーバーを使用してローカルWebサーバーに接続するようにブラウザーを設定するにはどうすればよいですか?
  3. これをより安全にするために、192.168.0.186にこの責任専用の制限付き権限を持つ新しいLinuxユーザーを作成する必要がありますか?
1
inf3rno

SSH転送を見てくださいsshの ローカルポート転送 を見てください。

ssh -L 3000:internalip:3000 ext.home.ip.addr

これにより、3000上のサーバーにマップするローカルポート3000が開きます。ssh接続を開始したマシンで http:// localhost:30 にアクセスしてアクセスします。

また、ルーターでポート転送を実行して、外部IPアドレスをポート22の内部IPアドレスにマップし、おそらくダイナミックDNSを使用してこれを公開する必要があります。残念ながら、これはSSHを世界に開放するという正味の効果があり、望ましくありません。また、PuTTYボックスでは役に立ちません( ただし、PuTTYで同様のことができます

ただし、これを行う場合は、ホームルーターにOpenVPNシステムをセットアップし、OpenVPNを使用して外部システムをLANに接続します。これにより、ポート22のトラフィックが保護され、SSHを使用する必要がなくなります。また、自動化がはるかに簡単で、ほとんどのOSにOpenVPNクライアントがあります。

1
davidgo