
집에 컴퓨터가 있어요 (홈 서버) irssi, rtorrent 등을 실행합니다. 내 ISP는 외부로부터의 모든 트래픽을 차단하고 있습니다.
로그인하고 싶습니다.홈 서버누구의 껍질이든원격 컴퓨터(NAT 뒤).
루트 액세스 권한 없이 어딘가에 쉘 계정이 있는데, 그게 유용할 수도 있습니다.
상황을 설명하는 다이어그램은 다음과 같습니다.
내 컴퓨터에서 쉘에 접근할 수 있나요?홈 서버? SSH 터널링에 대해 들었지만 이 사례와 일치하는 튜토리얼을 찾을 수 없었습니다.
답변1
홈 서버(타사에서 홈으로의 터널):
ssh -R 20000:127.0.0.1:22 thirdparty.org
그러면 홈 박스가 타사 셸에 연결되고 타사 셸의 포트 20000에 대한 모든 연결이 홈 박스의 포트 22(SSH 포트)로 전달되기 시작합니다.
원격 컴퓨터(원격에서 타사로 터널링):
ssh -L 20000:127.0.0.1:20000 thirdparty.org
그러면 원격 상자를 타사 셸에 연결한 다음 원격 상자의 포트 20000을 타사 셸의 포트 20000으로 전달하기 시작합니다.
그런 다음 원격 컴퓨터에서(터널을 통해 연결):
ssh 127.0.0.1:20000
홈 서버에 대한 자격 증명을 입력합니다.
그러면 원격 상자의 포트 20000으로 SSH를 시도합니다. 타사에 대한 터널을 설정했으므로 #2 명령은 이 연결 시도를 타사 셸의 127.0.0.1:20000으로 효과적으로 전달합니다. 그런 다음 첫 번째 명령은 연결을 홈 박스의 포트 22로 다시 전달하고, 이 시점에서 SSH 서버가 연결을 선택합니다.
답변2
아래에서 허용되는 솔루션을 더 잘 설명하려고 노력했습니다. "머신 A"와 "머신 B"가 모두 NAT 방화벽 뒤에 있다고 가정해 보겠습니다. 둘 다 원격 "머신 R"(예: VPS)에 대한 SSH 액세스 권한을 갖고 있습니다.
R -> A
ssh -R 20000:127.0.0.1:22 user@RemoteHost
위의 명령은 컴퓨터에서 실행되었습니다.ㅏ.
다음에서 터널을 만듭니다.아르 자형(R의 포트 20000) 에게ㅏ(A의 포트 22)(역터널링)
B -> R
ssh -L 8000:127.0.0.1:20000 user@RemoteHost
위 명령은 다음에서 실행되었습니다.비.
다음에서 터널을 만듭니다.비(B의 포트 8000) 에게아르 자형(R의 포트 20000)
비 -> 에이
ssh 127.0.0.1 -p 8000
실제 연결은 진행 중이지만아르 자형, 그건비(포트 8000)-> 아르 자형(포트 20000)-> 아(포트 22)
PuTTY와 Windows를 사용해도 동일합니다.
R -> A
putty.exe -R 20000:127.0.0.1:22 -ssh RemoteHost -P port -l user -pw password
B -> R
putty.exe -L 8000:127.0.0.1:20000 -ssh RemoteHost -P port -l user -pw password
비 -> 에이
putty.exe -ssh 127.0.0.1 -P 8000 -l user -pw password
답변3
아니면 HE.net으로 일부 IPv6 터널을 설정하고 직접 연결할 수도 있습니다... (많은 VPN 솔루션도 작동합니다.)