web-dev-qa-db-ja.com

CentOsシステムにsshトンネリングを介してプログラムをインストールする

インターネットにアクセスできないマシンAがあります。インターネットにアクセスできるマシンBがあります。

AとBはsshを介して相互に接続できます。

Bのインターネット接続を使用して、インターネットリポジトリからA(Perl、Rパッケージなど)にいくつかのプログラムをインストールしたいと思います。

これは可能ですか?そしてどうすればそれを行うことができますか?

ありがとう。

3
ZheFrench

ABの両方が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に転送することです。

4
DerfK

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の変更は同じになります。

4
ThoriumBR

システムAが公式リポジトリを取得できない場合は、システムBにローカルミラーをセットアップし、これをすべてのパッケージのインストール/更新リポジトリとして使用できます。

CentOSの詳細なハウツーは CentOS Wiki にあります。

2
deagh