SSH로 클라이언트 연결을 통해 인터넷에 서버 액세스 제공 수 있습니까 ? 서버 B 는

가정용 컴퓨터 A 를 사용하여 SSH 를 통해 외부 네트워크에 대한 액세스가 차단 된 서버 B 에 연결할 수 있습니다 . 즉, B 에서 인터넷에 대한 모든 요청에 오류가 발생합니다. 네트워크에 연결할 수 없습니다 . 인터넷에 제한없이 액세스 할 수 있는 컴퓨터 A 를 통과하도록 이러한 모든 요청을 리디렉션 할 수 있습니까 ?

서버 B 는 내 웹 사이트 중 하나를 호스팅하는 서버입니다. 일부 소프트웨어를 설치하기 위해 파일을 다운로드하고 싶습니다. 그러나 연결이 차단되었습니다. 파일을 전송할 수는 있었지만 소프트웨어 버전이 AB 에서 다르기 때문에 복잡했기 때문에 서로 다른 종속성과 AB 에서 다른 파일이 필요했습니다 .

인터넷에서 검색했는데 리버스 터널이 필요한 것 같습니다. 그러나 포트가 리디렉션 되는 솔루션 만 찾았습니다 . 그러나 BA 에 액세스 하지 않고 인터넷 에 액세스하기를 원하지 않기 때문에 필요한 것이 아닙니다 .



답변

컴퓨터 A를 통해 인터넷에 액세스하기 위해 컴퓨터 B가 연결 한 컴퓨터 A에서 프록시를 실행할 수 있습니다.

이 같은

             +----------+            +-----------+
             |          |+----SSH+-->|           |
             |     A    |            |    B      |
             |+--------+|            |           |
  Internet <-++-+PROXY<++<SSH Tunnel--+          |
             |+--------+|            |           |
             +----------+            +-----------+

포트 3128에서 수신 대기하는 A에 squid와 같은 프록시를 설치 한 후 다음을 사용하여 서버에 ssh 할 수 있습니다
ssh -L 3128:127.0.0.1:3128 user@B

그러면 B가 A를 통해 인터넷에 액세스 할 수있게됩니다.


답변

@Lawrence와 @SpiRail의 답변에 더 분명한 단계를 추가하면됩니다.

다음과 같이 설정을 수행하십시오.

호스트 A에서 설정 :

  1. 호스트 A에 프록시 서버 오징어를 설치하십시오. 기본적으로 Squid는 포트 3128에서 수신 대기합니다.
    yum install squid
  2. http_access deny all그런 다음 http_access allow all/etc/squid/squid.conf에 주석 을 추가하십시오 .
  3. 호스트 A 자체가 인터넷에 연결하기 위해 10.140.78.130:8080 /etc/squid/squid.conf과 같은 프록시를 사용 하는 경우 다음과 같이 프록시를 추가하십시오 .
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
cache_peer 10.140.78.130 parent 8080 0 no-query default
never_direct allow all

호스트 B에서 설정 :

  1. / etc / environment에 다음 항목을 추가하십시오.
export http_proxy=http://127.0.0.1:3129
export https_proxy=http://127.0.0.1:3129
  1. source /etc/environment

이제 설정이 완료되었습니다.

원격 포트 포워딩으로 SSH 터널 생성

  1. 호스트 A에서 다음 SSH 명령을 실행하십시오.
    ssh -R 3129:localhost:3128 user@HostB

    영구 SSH 터널을 만들려면 다음과 같이 autossh를 사용할 수 있습니다.
    autossh -M 20000 -f -NT -R 3129:localhost:3128 user@HostB
    위의 autossh 명령이 작동하려면 HostA에서 HostB로 SSH 키를 설정해야합니다.

  2. 그러면 호스트 B가 호스트 A를 통해 인터넷에 액세스 할 수 있습니다.

인터넷 확인 :

  1. 호스트 B에서 다음 명령을 실행하십시오.
    wget https://google.com

교통 흐름 다이어그램 :
여기에 이미지 설명을 입력하십시오


답변

@Lawrence의 대답은 내가 그것을 완전히 끝내기에 충분했습니다. 그러나 여기에 내가 사용한 자세한 단계가 있습니다.

필자는 랩톱 4g 동글을 사용하여 인터넷을 Wi-Fi 라우터에 고정 된 회선 연결로 라즈베리 파이로 라우팅하는 데 사용했습니다.

호스트가 Mac 인 경우 : squidman http://squidman.net/squidman/을 설치
하십시오.

(일반 오징어뿐만 아니라 그것을 만드는 데 너무 많은 문제가있었습니다) 기본 설정은 나에게 충분했습니다.

4g에 연결 wifi에 연결-wifi에서 고정 IP를 구성하고 게이트웨이 주소를 제거하십시오 (고급 일을하지 않는 한) 그렇지 않으면 두 개의 기본 경로와 매우 성가신 것입니다. -무선 라우터가 동일한 192.168.xy 범위를 사용하지 않는지 확인하십시오 (이 경우 다른 “x”구성)

ssh -R 8080:localhost:8080 pi@<ip address of the pi or target machine>

PI에서

export http_proxy=http://localhost:8080

visudo로 텍스트를 추가하십시오.

Defaults env_keep = "http_proxy https_proxy ftp_proxy"

이제 wget이 작동하고 sudo apt-get을 사용하여 패키지를 설치할 수 있습니다.

git뿐만 아니라
/programming/128035/how-do-i-pull-from-a-git-repository-through-an-http-proxy


답변