SSH 세션을 통해 원격 컴퓨터에 인터넷 서비스를 제공하시겠습니까?

SSH 세션을 통해 원격 컴퓨터에 인터넷 서비스를 제공하시겠습니까?

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에게 감사드립니다).noinethasinet

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]

답변3

SSH를 통해 이를 수행하는 방법은 다음과 같습니다.

인터넷에 접속할 수 없는 컴퓨터에서 다음을 실행하세요.

ssh -D 8080 machine_with_internet_access

당신은 교체할 수 있습니다8080사용하지 않은 포트 번호,

그런 다음 다음과 같은 소프트웨어를 설치하십시오.프록시 체인또는레드 삭스, 연결하도록 구성로컬호스트:8080, 이를 통해 인터넷 액세스가 필요한 소프트웨어를 실행합니다.

관련 정보