ssh -L과 -D의 차이점


51

ssh -L과 -D의 차이점을 이해하려고합니다. -D is SOCKS만을 제외하고 다른 것이 있습니까?

감사!

답변:


53

ssh -L로컬 포트를 엽니 다. 해당 포트로 보내는 모든 것은 ssh 연결을 통해 이루어지며 서버를 통해 나갑니다. 예를 들어 브라우저에서 ssh -L 4444:google.com:80열면 http://localhost:4444실제로 Google 페이지가 표시됩니다.

ssh -D로컬 포트를 열지 만 with와 같은 특정 엔드 포인트가 없습니다 -L. 대신 SOCKS 프록시 인 것처럼 가장합니다. 예를 들어, ssh -D 7777브라우저에 localhost:7777SOCKS 프록시 로 사용하도록 지시 할 때 브라우저를 열면 브라우저 요청이 모두 ssh 터널을 통과합니다. 공용 인터넷에서는 마치 컴퓨터가 아닌 ssh 서버에서 탐색하는 것처럼 보입니다.


6
-L에 대한 중요한 세부 사항 중 하나는 localhost : 80 : remotehost : 8080과 같이 로컬 전용으로 로컬 포트를 바인딩 할 수 있지만 다른 사용자를 위해 해당 포트를 바인딩 할 수도 있다는 것입니다. 따라서 로컬 네트워크의 머신이 로컬 머신에 대해 알지 않고도 터널을 통해 원격 머신에 대한 액세스를 제공 할 수 있습니다.
splitbyzero

@dividebyzero 나는 당신이 묘사하고있는 것을 이해하는데 어려움을 겪고있다
Michael Dorst

@MichaelDorst 나는 맨 페이지에서이 문장을 의미한다 :The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
dividebyzero

ssh -L 4444:google.com:80나를 위해 작동하지 않으면 user@example.com과 같은 다른 매개 변수가 필요합니다
Saman Mohamadi

6

SSH에서 -D로컬 "동적"응용 프로그램 레벨 포트 전달을 지정합니다.

SSH -D [bind_address:]port

로컬 "동적"응용 프로그램 레벨 포트 전달을 지정합니다. 이것은 로컬 측의 포트를 청취하도록 소켓을 할당하고, 선택적으로 지정된 bind_address에 바인드함으로써 작동합니다. 이 포트에 연결할 때마다 보안 채널을 통해 연결이 전달되고 응용 프로그램 프로토콜을 사용하여 원격 시스템에서 연결할 위치를 결정합니다. 현재 SOCKS4 및 SOCKS5 프로토콜이 지원되며 ssh는 SOCKS 서버 역할을합니다. 루트 만이 권한있는 포트를 전달할 수 있습니다. 구성 파일에서 동적 포트 전달을 지정할 수도 있습니다.

IPv6 주소는 대체 구문 인 [bind_address /] port 또는 주소를 대괄호로 묶어 지정할 수 있습니다.

수퍼 유저 만 권한있는 포트를 전달할 수 있습니다. 기본적으로 로컬 포트는 GatewayPorts 설정에 따라 바인드됩니다. 그러나 명시 적 bind_address를 사용하여 연결을 특정 주소에 바인딩 할 수 있습니다. "localhost"의 bind_address는 수신 포트가 로컬 전용으로 바인드되었음을 나타내며, 빈 주소 또는 '*'는 포트가 모든 인터페이스에서 사용 가능해야 함을 나타냅니다.

또한 ssh -L로컬 (클라이언트) 호스트의 지정된 포트가 원격 측의 지정된 호스트 및 포트로 전달되도록 지정합니다.

SSH -L [bind_address:]port:host:hostport

로컬 (클라이언트) 호스트의 지정된 포트가 원격 측의 지정된 호스트 및 포트로 전달되도록 지정합니다. 이것은 로컬 측의 포트를 청취하도록 소켓을 할당하고, 선택적으로 지정된 bind_address에 바인드함으로써 작동합니다. 이 포트에 연결될 때마다 보안 채널을 통해 연결이 전달되고 원격 시스템에서 호스트 포트 호스트 포트에 연결됩니다. 구성 파일에서 포트 전달을 지정할 수도 있습니다. IPv6 주소는 대체 구문 [bind_address /] port / host / hostport로 지정하거나 주소를 대괄호로 묶어 지정할 수 있습니다.

수퍼 유저 만 권한있는 포트를 전달할 수 있습니다. 기본적으로 로컬 포트는 GatewayPorts 설정에 따라 바인드됩니다. 그러나 명시 적 bind_address를 사용하여 연결을 특정 주소에 바인딩 할 수 있습니다. "localhost"의 bind_address는 수신 포트가 로컬 전용으로 바인드되었음을 나타내며, 빈 주소 또는 '*'는 포트가 모든 인터페이스에서 사용 가능해야 함을 나타냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.