결론적으로

결론적으로

SSH 포트 포워딩을 시도하고 있는데 뭔가 혼란스러운 것을 발견했습니다. 다음 명령이 동일한 작업을 수행하는 것 같습니다.

ssh -NfL 192.168.121.215:2222:vm2.local:22 vm2.local
ssh -NfL 192.168.121.215:2223:localhost:22 vm2.local
ssh -NfL 192.168.121.215:2224:vm2.local:22 localhost

PC에서 유역 2222, 2223 및 2224에 연결하면 모두 vm2.local로 이동됩니다.

$ ss -antp # on vm1.local (192.168.121.215)
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128         192.168.121.215:2222                     *:*      users:(("ssh",10170,4))
LISTEN     0      128         192.168.121.215:2223                     *:*      users:(("ssh",10178,4))
LISTEN     0      128         192.168.121.215:2224                     *:*      users:(("ssh",10225,4))
LISTEN     0      128                       *:22                       *:*      users:(("sshd",836,3))
...

위 명령의 차이점은 무엇입니까? 터널이 좀 다르게 만들어졌나요? 매뉴얼 페이지에 따르면 첫 번째 명령은 정확하고 두 번째 명령은 일부 웹 사이트에서 가져온 것이며 마지막 명령은 내가 저지른 실수이며 결과도 작동합니다.

답변1

거기귀하의 경우에는 중요하지 않더라도 차이점이 있습니다. 제가 그림을 잘 못 그려서 말로 설명하자면 이렇습니다.

  1. ssh -NfL 192.168.121.215:2222:vm2.local:22 vm2.local
    

    이렇게 하면 각 끝(로컬 및 원격)이 로컬 IP 주소에 바인딩되므로 이 보안 채널을 통해 호스트와 포트 vm2.local간의 연결을 암호화할 수 있습니다.

  2. ssh -NfL 192.168.121.215:2223:localhost:22 vm2.local
    

    이는 위와 동일하지만 공용 네트워크 인터페이스의 주소를 바인딩하는 대신 로컬 인터페이스의 주소( 127.0.0.1)를 바인딩합니다. SSH 포트의 경우 차이가 없지만(두 포트 모두에서 수신 대기) 수신만 하는 서비스 localhost(예 mysql: )에서는 중요합니다.

  3. ssh -NfL 192.168.121.215:2224:vm2.local:22 localhost
    

    이는 로컬 호스트에 안전하게 연결한 다음(기본적으로 보안 효과 없음) 원격 호스트에 직접 바인딩하므로 포트에 쓰는 모든 내용은 2224컴퓨터 간에 직접 전송됩니다.암호화되지 않은(SSH 연결에는 문제가 되지 않지만 다양한 트래픽 유형에는 중요합니다.)

결론적으로

두 번째 경우를 사용하는 방법을 배워야 하지만 전달된 포트에 외부에서 액세스할 필요가 없는 경우 localhost다음과 같이 항상 로컬 측에서 바인딩해야 합니다.

ssh -NfL localhost:2223:localhost:22 vm2.local

localhost기본값은 어디에 있습니까?

ssh -NfL 2223:localhost:22 vm2.local

관련 정보