インターネットにアクセスできないマシンAがあります。インターネットにアクセスできるマシンBがあります。
AとBはsshを介して相互に接続できます。
Bのインターネット接続を使用して、インターネットリポジトリからA(Perl、Rパッケージなど)にいくつかのプログラムをインストールしたいと思います。
これは可能ですか?そしてどうすればそれを行うことができますか?
ありがとう。
A
とB
の両方がOpenSSHを使用している場合、ホストの1つのウィンドウでA
を実行します。
ssh -D 1080 user@B
A:1080
をリッスンし、B
を介して要求されたアドレスに接続を送信するSOCKSプロキシを開始します。
この接続が確立されている限り、A
でSOCKSv4またはSOCKSv5プロキシ(これはHTTPプロキシとは異なります)をサポートする他のプログラムを実行できます。
curl -x socks5h://localhost:1080 http://www.google.com/
tryhttp_proxy
環境変数をsocks5h://localhost:1080
に設定できますが、ほとんどのプログラムは、これが実際のhttpプロキシであり、通信できないことを想定しています。
もう1つのオプション(おそらく簡単)は、すべてをホストB
にダウンロードしてから、scp
またはsftp
を使用してファイルをA
に転送することです。
SSHトンネリングを使用して可能です。
ホームサーバー上:
ssh -R 9999:<proxy Host>:<proxy port> user@remotehost
これにより、リモートサーバーのポート9999が開き、プロキシへのトンネルが作成されます。
リモートサーバーで、yum.conf
を編集し、以下を追加する必要があります。
proxy=http://127.0.0.1:9999
これにより、前に設定したトンネルを使用してプロキシに接続されます。
プロキシが設定されていない場合は、動的チューニングを使用できます。ネットワークにプロキシがない場合、または透過プロキシを採用している場合にのみ機能します。
リモートサーバーの場合:
ssh -D 9999 user@ip-of-local-server
これにより、ローカルサーバーに接続し、ポート9999を開き、動的トンネルを作成します。 yum.conf
の変更は同じになります。
システムAが公式リポジトリを取得できない場合は、システムBにローカルミラーをセットアップし、これをすべてのパッケージのインストール/更新リポジトリとして使用できます。
CentOSの詳細なハウツーは CentOS Wiki にあります。