ssh
공용 IP를 사용하면 원격 컴퓨터에 쉽게 연결할 수 있습니다 .
하지만 이제 공용 IP가 없는 원격 컴퓨터가 있고 공용 IP가 있는 컴퓨터에서 연결해야 합니다. 따라서 원격 컴퓨터는 이 연결을 시작해야 합니다(클라이언트 추가).
할아버지의 컴퓨터에 공용 IP가 없고 가끔 시스템에 대한 도움이 필요하기 때문에 이 정보가 필요합니다.
Windows의 유사한 상황에서 나는 VNC 연결(TightVNC를 통해)을 사용했고 TightVNC 서버에는 "클라이언트 추가" 옵션이 있었습니다. 사용자가 방금 클라이언트의 IP(예: 내 공용 IP)를 입력했고 내 클라이언트는 이미 "수신 모드"에 있었습니다. " 그리고 "서버"가 클라이언트를 추가하면 연결이 초기화됩니다.
그렇다면 SSH 연결을 통해 동일한 트릭을 수행하는 것이 가능합니까?
답변1
정의에 따르면 클라이언트는 연결을 시작하는 당사자입니다.
귀하의 문제에 대한 간단한 해결책은 역방향 터널을 구축하는 것입니다.
공개 IP가 없는 컴퓨터의 경우:
ssh -R 2222:localhost:22 loginOfServerWithPublicIP@publicIP
이는 SSH를 통해 서버에 연결하고 포트 2222에 공용 IP가 있는 서버에서 포트 22(SSH)에 공용 IP가 없는 시스템으로 터널을 구축합니다.
그런 다음 서버에서:
ssh -p 2222 loginOfComputerWithoutPublicIP@locahost
연결은 첫 번째 터널을 통해 서버의 포트 2222에서 컴퓨터의 포트 22로 리디렉션됩니다. 터널의 탄력성을 높이기 위해 유사한 도구를 사용할 수 있습니다 autossh
(예: 종료 시 자동으로 다시 시작).
답변2
원격, 클라이언트, 호스트, 서버 등의 이름을 명확하게 하기 위해 로컬 PC(LPC-1)가 로컬 PC와 원격 PC 모두 원격 PC(RPC-2)에 SSH로 연결해야 하는 다이어그램을 만들었습니다. 라우터와 공용 IP 주소 뒤의 해당 네트워크에 있습니다. 사용자는 원격 라우터의 포트 전달 설정을 수정할 수 없지만 로컬 라우터에 액세스하여 포트 전달 설정을 수정할 수 있습니다.
[![네트워크 내 두 컴퓨터 간 SSH를 수행하는 방법][1]][1]
- 로컬 사용자 계정: userLPC1
- 원격 사용자 계정: userRPC2
위의 두 명령은 다음과 같이 변환됩니다.
RPC2> ssh -f -N -T -R2222:localhost:22 42.48.128.49
LCP1> ssh -p 2222 userRPC2@localhost
그러나 LPC1은 방화벽인 LR(로컬 라우터) 뒤에도 있습니다. 로컬 라우터(LR)가 포트 2222를 LPC1로 전달하는 것을 확인할 수 있습니다.
ssh -p 2222 userRPC2@localhost
LPC1이 공용 네트워크에 있지 않기 때문에 LPC1에서 실행하면 RPC2에 도달할 수 있을지 의문입니다 .
누군가가 이 다이어그램을 사용하여 LPC1과 RPC2 사이에 SSH 세션을 생성하기 위한 보다 명확한 단계를 제공하기를 바랍니다.