sshを介してWebページにアクセスする


14

IEEE xploreにアクセスする必要がありますが、研究所からダウンロードする権利がありません。

sshを介して研究所のサーバーにログインできます。

だから私はssh経由で研究所サーバーを通じてIEEE xploreにアクセスできますか?

私は解決策を探しました、いくつかの答え:

ssh -L 8080:localhost:80 user@remoteserver

そして彼は言う:

次に、ローカルブラウザでlocalhost:8080を指定します。リモートサーバーのlocalhost:80に転送する必要があります。

ご協力ありがとうございました!


ここでの良いリファレンス:help.ubuntu.com/community/SSH/OpenSSH/PortForwarding
ThorSummoner

回答:


23

最初の方法:

SSHトンネルを起動する

SSHトンネルを開始するには、単にターミナルを開き、次のフラグを使用してSSH経由でリモートサーバーに接続します。

ssh -D 8080 -C -N username@example.com

SSHトンネルでWebを閲覧する(Chrome)

それでは、新しいSSHトンネルを使用してWebの閲覧を始めましょう。

  • Google Chromeを開きます
  • 右上のレンチアイコンを選択します
  • 「設定」を選択します
  • [詳細設定を表示…]を選択します
  • [プロキシ設定の変更…]を選択します
  • 「SOCKSプロキシ」を選択します
  • 「127.0.0.1」と入力します
  • ポート「8080」を入力
  • 「OK」を選択して変更を保存します

「my ip」でGoogleを検索し、現在のIPアドレスを確認します。

これにより、ポート8080でSSHトンネルが起動され、example.comのサーバーを介してすべてのトラフィックが(安全に)ルーティングされます。

SSHトンネルの終了

SSHトンネルを終了するには、ブラウザ内でSOCKSプロキシを無効にします。

ソース

2番目の方法:

Shellinaboxを使用して簡単に実行できます

ユニバースリポジトリをチェックしたことを確認してください

インストールする

 $ sudo apt-get install openssl shellinabox

Shellinaboxの構成

デフォルトでは、shellinaboxdはlocalhostのTCPポート4200でリッスンします。インストール中に、HTTPSプロトコルを使用するために「/ var / lib / shellinabox」の下に自動的に作成される新しい自己署名SSL証明書をインストールします。

$ sudo vi /etc/default/shellinabox

# specify the IP address of a destination SSH server
SHELLINABOX_ARGS="--o-beep -s /:SSH:172.16.25.125"

# if you want to restrict access to shellinaboxd from localhost only
SHELLINABOX_ARGS="--o-beep -s /:SSH:172.16.25.125 --localhost-only"

注意:ip 172.16.25.125をあなたのものに置き換えてください

Shellinaboxを起動する

構成が完了したら、サービスを開始できます

$ sudo service shellinaboxd start

Shellinaboxを確認する

「netstat」コマンドを使用して、Shellinaboxがポート4200で実行されているかどうかを確認しましょう。

$ sudo netstat -nap | grep shellinabox
or
# netstat -nap | grep shellinabox

tcp        0      0 0.0.0.0:4200            0.0.0.0:*               LISTEN      12274/shellinaboxd

Webブラウザを開き、「https:// "Your-IP-Adress:6175"」に移動します。WebベースのSSHターミナルが表示されるはずです。ユーザー名とパスワードを使用してログインすると、シェルプロンプトが表示されます。

ここに画像の説明を入力してください

ソース


@maythus、ありがとうございます、あなたの答えは素晴らしいです。私は解決策1で私の問題を解決
ulyssis2

@ ulyssis2あなたは非常に仲間を歓迎している
Maythux

@kimerseenあなたは歓迎されている友人
-Maythux


2

あなたが提供した例は正しいですが、やや誤解を招くかもしれません。これは動作するはずです:

ssh -L 8080:<remote-web-host-you-want-to-see>:80 remote-user@remote-ssh-server

たとえば、ローカルで表示したいこのWebページにアクセスできるsshを実行しているリモートボックスを考えます。

http://192.168.1.2/index.html

ローカルボックスにトンネルを作成して、そのリモートページを参照できるようにするには、ローカルで実行します。

ssh -L 8080:192.168.1.2:80 user@remote-ssh-server

そして、ウェブブラウザで、私は訪問します:

http:// localhost:8080 / index.html

80が「特権」ポート(<1024)であるため、ポート指定子を省略する(または省略する)場合は、ルートとしてトンネルを開く必要があります。

sudo ssh -L 80:<remote-web-host-you-want-to-see>:80 remote-user@remote-ssh-server

次に、ローカルにアクセスできます。

http://localhost/index.html

他の構成は必要ありません。

ちなみに、これはローカルで表示したい単一のホストでのみ機能します。さらに表示する必要がある場合は、他のポートでさらにトンネルを開くか、プロキシを介してすべてのリモートホストへのリクエストをトンネリングする他のソリューションを調べる必要があります。

これは、-Lスイッチの3番目の使用法ですman ssh

 -L [bind_address:]port:host:hostport
 -L [bind_address:]port:remote_socket
 -L local_socket:host:hostport
 -L local_socket:remote_socket
         Specifies that connections to the given TCP port or Unix socket on the
         local (client) host are to be forwarded to the given host and port, or
         Unix socket, on the remote side.  This works by allocating a socket to
         listen to either a TCP port on the local side, optionally bound to the
         specified bind_address, or to a Unix socket.  Whenever a connection is
         made to the local port or socket, the connection is forwarded over the
         secure channel, and a connection is made to either host port hostport,
         or the Unix socket remote_socket, from the remote machine.

         Port forwardings can also be specified in the configuration file.  Only
         the superuser can forward privileged ports.  IPv6 addresses can be
         specified by enclosing the address in square brackets.

         By default, the local port is bound in accordance with the GatewayPorts
         setting.  However, an explicit bind_address may be used to bind the
         connection to a specific address.  The bind_address of “localhost”
         indicates that the listening port be bound for local use only, while an
         empty address or ‘*’ indicates that the port should be available from
         all interfaces.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.