내가 겪고 있는 문제는 아래와 같이 ssh 명령을 사용하여 포트 전달 사용을 이해하려고 하는 것입니다. 혼란은 내 컴퓨터가 localhost인 localhost의 사용에 기반을 두고 있지만 원격 서버를 참조하는 것 같습니다. 따라서 무슨 일이 일어나고 있는지 명확하지 않으므로 아래 ssh 명령에서 무슨 일이 일어나고 있는지 명확히 할 수 있는 정보 및/또는 문서에 대한 링크를 찾고 있습니다.
ssh -f myUserID@someip -L [bind_address:]port:host:hostport
- 위의 세부 사항은 매뉴얼에서 가져온 것입니다. 로컬(클라이언트) 호스트의 지정된 포트가 원격 측의 지정된 호스트 및 포트로 전달되도록 지정합니다.
ssh 명령에 관해서는 왼쪽이 로컬(클라이언트)로 간주된다고 들었습니다.
따라서 다음 구문을 사용하십시오.
ssh -f myUserID@someip -L 1234:localhost:9200
왼쪽에 IP가 없으면 localhost는 포트 1234에 있다고 가정합니까?
localhost:9200의 두 번째 부분을 해석하는 방법을 모르겠습니다.
위의 ssh 명령을 어떻게 해석해야 합니까?
[bind_address:]port:host:hostport는 로컬(클라이언트) 호스트의 지정된 포트가 원격 측의 지정된 호스트 및 포트로 전달되도록 지정합니다. 이는 로컬 측의 포트에서 수신 대기하도록 소켓을 할당하고 선택적으로 지정된 바인딩 주소에 바인딩함으로써 수행됩니다. 이 포트에 연결될 때마다 연결은 보안 채널을 통해 전달되고 원격 컴퓨터에서 호스트 포트인 호스트 포트로 연결이 설정됩니다. 포트 전달은 구성 파일에서도 지정할 수 있습니다. IPv6 주소는 대체 구문인 [bind_address/]port/host/hostport를 사용하거나 주소를 대괄호로 묶어 지정할 수 있습니다. 수퍼유저만 권한 있는 포트를 전달할 수 있습니다. 기본적으로 로컬 포트는 GatewayPorts 설정에 따라 바인딩됩니다. 그러나 명시적인 바인딩_주소를 사용하여 특정 주소에 연결을 바인딩하는 것이 가능합니다. "localhost"의 바인딩 주소는 수신 포트가 로컬 전용임을 나타내고, 빈 주소 또는 "*"는 포트가 모든 인터페이스에서 사용 가능해야 함을 나타냅니다.
내 게시물의 형식을 명확히 해야 합니다. 읽기가 정의되는 방식과 명령이 게시되는 방식으로 인해 localhost 1234 포트를 localhost 9200으로 전달하는 것처럼 들리기 때문에 원격 서버와 통신할 수 있는 방법에 대해서는 이해가 되지 않습니다.
답변1
-L1234:localhost:9200
-L
: 로컬 전달 수행(로컬 클라이언트에서 원격으로 전달)1234
: 실행 중인 로컬 시스템의 tcp/1234에서 수신합니다.ssh
localhost:9200
: 트래픽을 전달할 대상입니다. 대상은 대상 시스템의 관점에서 설명됩니다(someip
예제에서는 "").localhost
여기서 의미하는 것은 원격 시스템의 tcp/9200을 의미합니다someip
.9200
로컬 컴퓨터는 포트 1234의 연결을 수락하고 원격 호스트의 포트 9200으로 트래픽을 터널링합니다.
대상은 localhost
원격지의 관점뿐만 아니라 원격지에서 액세스할 수 있는 모든 컴퓨터일 수 있습니다. 따라서 someip
로컬 컴퓨터에서는 액세스할 수 있지만 (직접적으로) 액세스할 수 없는 컴퓨터 로 전달하려는 경우 다음과 같은 방법을 사용할 수 있습니다.
-L1234:otherip:9200
답변2
방금 구글 검색해서 잽싸게 검색했는데..
https://www.howtogeek.com/168145/how-to-use-ssh-tunneling/
이 문서를 읽고 다음 섹션으로 이동하십시오.
"원격 포트 전달: 원격 시스템에서 로컬 리소스에 액세스할 수 있도록 만들기"
이것이 바로 귀하의 명령이 수행하는 작업입니다.
다음에는 더 많이 구글을 검색해 보세요. 검색창에 ssh "-L"만 입력하면 -L이 포함된 답변이 반환됩니다.
감사합니다
단발