SSHを介してリモート/ホスト(同じネットワーク/ LAN)に接続されているコンピュータはインターネットにアクセスできますが、ホストはアクセスできません。
ホストシステムでアップデートを実行してパッケージをインストールすることは、エージェントをローカルで起動し、それを使用するようにリモートシステムを設定する必要があるため、非常に不便です。
SSHなどでこれを行うより簡単な方法があるかどうか疑問に思います。
私は複雑さを知っていますが、知りたいです。
Emacs経由で使用してくださいplink
(重要な場合)。
答え1
私たちはインターネットにアクセスできる機械hasinet
とそうでない機械を指しますnoinet
。
SSH接続を確立できる場合~から noinet
到着 hasinet
OpenSSHに組み込まれているSOCKSプロキシを使用すると、これを簡単に実行できます。このコマンドはnoinet
受信ポートにSOCKSプロキシを設定します1080
。
noinet$ ssh -D 1080 hasinet
SSH接続のみを設定できる場合到着 noinet
~から hasinet
SOCKSプロキシでOpenSSHを実行してからhasinet
ポートを転送できます。これは次のような単一のコマンドできれいに行うことができます(@Patrickに感謝します)。noinet
hasinet
hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet
SOCKSプロキシの使用方法
このプロキシの使用方法はアプリケーションによって異なります。一部のアプリケーションは組み込みSOCKSプロキシをサポートしています。この場合、アプリケーションをonに設定する必要がありますlocalhost:1080
。そうでない場合は、@sciurusが提案したようにプロキシチェーンまたはredsockを使用できます。靴下特定のコマンドに対してのみネットワークアクセスが必要な場合、これはより軽いソリューションです。
答え2
-R
組み込みで、@smammyが提案した長いコマンドを必要としないSOCKS4 / 5アクションでフラグを使用できます。
[hasinet]$ ssh -R 1080 noinet
次のプロキシを使用できます。
[noinet]$ curl -x socks5h://127.0.0.1:1080 http://www.google.it
-R
これは、ターゲットホストが提供されていない場合、このフラグがSOCK4 / 5プロキシに置き換えられるために機能します。男性SSHから:
-R [bind_address:] port:host:hostport
-R [bind_address:] port
Specifies that connections to the given TCP port or Unix socket on the remote (server) host are to be forwarded to the local side.
This works by allocating a socket to listen to either a TCP port or to a Unix socket on the remote side. Whenever a connection is made to this port or Unix socket, the connection is forwarded over the secure channel,
and a connection is made from the local machine to either an explicit destination specified by host port hostport, or local_socket, or, if no explicit destination was specified, ssh will act as a SOCKS 4/5 proxy and for‐
ward connections to the destinations requested by the remote SOCKS client.
[snip]