역방향 SSH 터널 모든 연결

역방향 SSH 터널 모든 연결

네트워크를 설정하는 데 문제가 있으며 네트워크 지식이 부족하거나 로컬 Linux 커뮤니티가 도움을 줄 수 없습니다.

NAT 라우터 뒤에 숨겨진 서버 A(내 PC 바로 근처)와 고정 IP를 사용하는 VPS인 서버 B가 있습니다.

내 서버 A를 인터넷 어디에서나 액세스할 수 있는 웹 서버로 사용하고 싶습니다(이후에는 자체 소규모 웹 호스팅으로도 사용). 인터넷을 통해 SSH를 통해 서버 B를 통해 서버 A에 액세스하는 방법을 깨달았습니다.역방향 SSH 터널. 하지만 이 물건에는 두 가지 결함이 있습니다.

  • 하나의 포트만 통과합니다(예: 모든 포트에서 웹, SSH 및 더 많은 서버를 동시에 유지하고 싶습니다).
  • 네트워크에서 서버 A에 직접 액세스할 수 없습니다. 서버 B에 연결한 다음 연결해야 합니다.ssh -p 22222 username@localhost

모든 포트를 기존 터널로 전달하는 솔루션이 있습니까? 내가 인터넷에서 찾은 모든 내용은또는역터널을 만들어라또는포트를 직접 터널에는 전달하지만 기존 역방향 터널에는 전달하지 않습니다.

답변1

어쩌면 당신은 이미 "역방향 SSH 터널링에 대한 두 가지 추가 참고 사항"을 알고 있을 수도 있지만, 놓친 경우를 대비해 다음을 수행하십시오.

  1. 역방향 SSH 터널하나의명령에는 하나가 아닌 여러 개의 포트 전달이 포함될 수 있습니다.
  2. 역방향 SSH 터널은 로컬 또는 공용 IP(B의 로컬 호스트뿐만 아니라)에서도 수신 대기할 수 있습니다.

이를 달성하려면 서버 B 에 넣고 sshd 서비스를 다시 시작해야 하므로 (1)여러 -R 매개변수를 추가하기만 하면 됩니다 . 일반적으로 우리는 루트에만 허용되는 1024 미만의 서버 B 포트에서도 수신 대기를 원하므로 sshd_config 파일에도 있어야 합니다.(2)GatewayPorts clientspecified/etc/ssh/sshd_configPermitRootLogin yes

서버 A에서 실행되는 전체 ssh 명령은 다음과 같습니다.

ssh -R serverBpublicIP:2222:serverAlocalIP:22 \
    -R   serverBpublicIP:80:serverAlocalIP:80 \
    -R serverBpublicIP:5901:serverAlocalIP:5901 \
    -R serverBpublicIP:8080:serverAlocalIP:8080 root@serverBpublicIP
#--------------------------|----------------------------------------
#     new listening B side | already listening local A side

4개의 포트를 서버 B의 공용 IP로 전달합니다. 이 명령이 제대로 작동하는지 확인하고 확인하면 daemon -fNT매개변수를 추가하고 systemd를 사용하여 자동으로 시작할 수 있습니다.

전달에 실패하면 새 포트가 사용 가능한지 확인하세요.

serverB$ netstat -anpt | grep '2222\|80\|5901\|8080'

따라서 제한된 수의 TCP 포트가 필요한 경우(UDP 포트 범위 요구 사항이 있는 일부 특정 SIP 전화 또는 RTP 응용 프로그램을 사용하지 않는 경우) 대부분의 경우 역방향 터널링으로 충분합니다.

답변2

확인하다우주선프로젝트.

문서에 따르면 다음과 같은 일반적인 시나리오를 해결합니다.

  • 클라이언트 컴퓨터(또는 라우터)는 Linux, FreeBSD 또는 MacOS입니다.
  • SSH를 통해 원격 네트워크에 액세스할 수 있습니다.
  • 원격 네트워크에 대한 관리자 액세스 권한이 반드시 필요한 것은 아닙니다.
  • 원격 네트워크에는 VPN이 없거나 어리석고 복잡한 VPN 프로토콜(IPsec, PPTP 등)만 있습니다. 아니면 관리자이고 VPN 도구의 열악한 상태로 인해 좌절감을 느꼈을 수도 있습니다.
  • 원격 네트워크의 모든 호스트/포트에 대해 SSH 포트 전달을 생성하고 싶지는 않습니다.
  • 당신은 openssh의 포트 포워딩이 무작위로 느리거나 멍청하기 때문에 싫어합니다.
  • openssh의 PermitTunnel 기능은 openssh 서버에서 기본적으로 비활성화되어 있기 때문에 사용할 수 없습니다. 또한 TCP-over-TCP를 지원하지만 성능이 낮습니다(아래 참조).

관련 정보