(1) 원격 전달의 경우:
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side. This works by
allocating a socket to listen to port on the remote side, and whenever a connection is made to this port, the connection is forwarded over the
secure channel, and a connection is made to host port hostport from the local machine.
Port forwardings can also be specified in the configuration file. Privileged ports can be forwarded only when logging in as root on the
remote machine. IPv6 addresses can be specified by enclosing the address in square brackets.
By default, the listening socket on the server will be bound to the loopback interface only. This may be overridden by specifying a
bind_address. An empty bind_address, or the address ‘*’, indicates that the remote socket should listen on all interfaces. Specifying a
remote bind_address will only succeed if the server's GatewayPorts option is enabled (see sshd_config(5)).
If the port argument is ‘0’, the listen port will be dynamically allocated on the server and reported to the client at run time. When used
together with -O forward the allocated port will be printed to the standard output.
hostport
대상에서 실행 중인 대상 프로세스의 연결 끝점을 지정합니다 host
.
port
연결 끝점 입니다
- SSH 서버 프로세스에서 또는
- SSH 서버와 동일한 소스 호스트에서 실행되는 프로세스에서 자체 연결하여 SSH 터널을 사용하고 싶습니까
port
?
(내 추측은 후자다)
(2) 로컬 전달의 경우:
-L [bind_address:]port:host:hostport
Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side. This works by
allocating a socket to listen to port on the local side, optionally bound to the specified bind_address. Whenever a connection is made to
this port, the connection is forwarded over the secure channel, and a connection is made to host port hostport from the remote machine. Port
forwardings can also be specified in the configuration file. IPv6 addresses can be specified by enclosing the address in square brackets.
Only the superuser can forward privileged ports. By default, the local port is bound in accordance with the GatewayPorts setting. However,
an explicit bind_address may be used to bind the connection to a specific address. The bind_address of “localhost” indicates that the listen‐
ing port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
hostport
대상에서 실행 중인 대상 프로세스의 연결 끝점을 지정합니다 host
.
port
연결 끝점 입니다
- SSH 클라이언트 프로세스에서 또는
- SSH 클라이언트와 동일한 소스 호스트에서 실행 중인 프로세스에서 자체 연결을 통해 SSH 터널을 사용하고 싶습니까
port
?
(내 추측은 후자다)
(3) SOCKS 프록시의 경우:
-D [bind_address:]port
Specifies a local “dynamic” application-level port forwarding. This works by allocating a socket to listen to port on the local side, option‐
ally bound to the specified bind_address. Whenever a connection is made to this port, the connection is forwarded over the secure channel,
and the application protocol is then used to determine where to connect to from the remote machine. Currently the SOCKS4 and SOCKS5 protocols
are supported, and ssh will act as a SOCKS server. Only root can forward privileged ports. Dynamic port forwardings can also be specified in
the configuration file.
IPv6 addresses can be specified by enclosing the address in square brackets. Only the superuser can forward privileged ports. By default,
the local port is bound in accordance with the GatewayPorts setting. However, an explicit bind_address may be used to bind the connection to
a specific address. 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.
port
연결 끝점 입니다
- SSH 클라이언트 프로세스에서
- SSH SOCKS 서버에서 또는
- SSH 클라이언트와 동일한 호스트에서 프로세스를 실행 중이고 SOCKS를 사용하여 서버에 연결하고 싶습니까
port
?
(제 생각에는 두 번째 것 같습니다. SSH 클라이언트에 자체 기본 포트가 있기 때문에 첫 번째가 아닌 것 같습니다. 세 번째는 잘 모르겠습니다)
답변1
이 스케치는 귀하의 모든 질문에 답하는 데 도움이 될 것입니다.https://unix.stackexchange.com/a/118650/121504
그러나 귀하의 질문에 명확하게 대답하려면 다음을 수행하십시오.
원격 전달의 경우:
port
SSH 서버의 연결 끝점입니다.로컬 전달의 경우:
port
SSH 클라이언트 프로세스의 연결 끝점입니다.SOCKS 프록시의 경우:
port
SSH 클라이언트 프로세스의 연결 끝점입니다.
그러나 더 시각적인 설명은 실제로 위에 링크된 스케치입니다. 그러나 요약하자면:
이것첫 번째포트(SOCK 프록시에 고유함)는 다음과 같습니다.언제나이것자유 항구다음 단계를 사용하여 연결합니다. 이것다른port는 해당 포트가 위치한 포트입니다.기존 서비스 실행.
편집하다:
실제 문제가 무엇인지 이해한다면 더 쉽게 알아낼 수 있는 것은 lsof
내 예에서 .your 포트를 사용하는 것입니다 12345
.
원격 전달의 경우:
[local ] $ ssh -R 12345:localhost:22 remote
[remote] $ lsof -P | grep 12345
sshd 27772 root 7u IPv6 1304283702 0t0 TCP localhost:12345 (LISTEN)
sshd 27772 root 8u IPv4 1304283703 0t0 TCP localhost.localdomain:12345 (LISTEN)
로컬 전달의 경우:
[local] $ ssh -L 12345:localhost:22 remote
[local] $ lsof -p $(pidof ssh) -P | grep 12345
ssh 6779 jakuje 4u IPv6 146565 0t0 TCP ip6-localhost:12345 (LISTEN)
ssh 6779 jakuje 5u IPv4 146566 0t0 TCP localhost:12345 (LISTEN)
동적 포트 전달의 경우:
[local] $ ssh -D 12345 [email protected]
[local] $ lsof -p $(pidof ssh) -P | grep 12345
ssh 11388 jakuje 4u IPv6 173537 0t0 TCP ip6-localhost:12345 (LISTEN)
ssh 11388 jakuje 5u IPv4 173538 0t0 TCP localhost:12345 (LISTEN)