사용자 지정 SSH 포트를 사용하여 로컬 포트의 모든 요청을 원격 Amazon EC2 인스턴스의 포트로 전달하는 방법

사용자 지정 SSH 포트를 사용하여 로컬 포트의 모든 요청을 원격 Amazon EC2 인스턴스의 포트로 전달하는 방법

로컬 포트 ​​8888에서 포트 8888로의 모든 요청을 원격 Amazon EC2 인스턴스로 전달하려고 합니다. 유일한 차이점은 내 EC2 인스턴스가 사용자 지정 포트 56129에서 SSH를 실행하고 있다는 것입니다.

로컬 시스템에서 ec2 인스턴스를 성공적으로 ping할 수 있지만 로컬 포트의 요청을 ec2 인스턴스의 포트로 전달하려고 하면 다음과 같은 결과가 나타납니다.

채널 2: 오픈 실패: 관리 금지: 오픈 실패

다음 명령을 사용하고 있습니다.

ssh -i <pem key> -NfL 8888:localhost:8888 <user>@<instance ip> -p 56129

그런 다음 비밀번호를 묻습니다. 비밀번호를 승인하면 메시지가 없습니다. 하지만 브라우저에서 localhost:8888을 열면 다음 오류가 발생합니다.

채널 2: 오픈 실패: 관리 금지: 오픈 실패

몇 가지 관찰 -

  • 비밀번호를 사용하여 성공적으로 실행 중입니다 ssh -i <pem key> <user>@<instance ip> -p 56129.

  • EC2 인스턴스의 포트 8888에서 Jupyter Notebook을 실행하고 있습니다. 인스턴스에 SSH로 접속한 후, 컬 localhost:8888은 아무것도 반환하지 않습니다.

답변1

원하는 것을 달성하려면 로컬 주소를 바인딩해야 한다고 생각합니다.

ssh -i <pem key> -NfL localhost:8888:localhost:8888 <user>@<instance ip> -p 56129

또는

ssh -i <pem key> -NfL localhost:8888:<instanceip>:56129 <user>@<instance ip>

왜냐하면 당신이 달성하고 싶은 것이 100% 명확하지 않기 때문입니다.

시험용

telnet ipaddress portnumber

이를 통해 미리 연결하거나 연결하지 않고 런타임에 확인할 수 있습니다.

답변2

이 메시지는 sshd설정이 TCP 포트 전달을 허용하지 않음을 (원격) 서버에 알려줍니다.

sshd이 옵션은 원격 서버의 구성(일반적으로 /etc/ssh/sshd_config)에서 활성화되어야 합니다.

AllowTcpForwarding

TCP 전달이 허용되는지 여부를 지정합니다. 사용 가능한 옵션은 yes(기본값) 또는 allTCP 전달 허용, no모든 TCP 전달 차단, local로컬(ssh(1) 관점에서) 전달만 허용 또는 remote원격 전달만 허용입니다. 사용자는 언제든지 자체 전달자를 설치할 수 있으므로 TCP 전달을 비활성화해도 사용자가 셸 액세스를 거부하지 않는 한 보안이 향상되지 않습니다.

위의 기본값은 Debian 시스템용이며 AWS에서는 기본값이 아닐 수도 있습니다 sshd. 이 옵션은 / 또는 최소한 포트 전달을 활성화 해야 /etc/ssh/sshd_config합니다 :yesalllocal

AllowTcpForwarding yes

sshd이 옵션을 적용하려면 원격 서버를 다시 로드하거나 다시 시작해야 합니다.새로운연결하다. 아직 사용 중인 연결에서 구문 오류를 신속하게 수정하지 않을 경우 추가 접속이 차단될 수 있으니 주의하시기 바랍니다.

포트 전달 활성화와 관련된 다른 많은 미묘한 사항이 있습니다. 예를 들어, 사용자별 항목authorized_keys이는 특정 포트로만 제한될 수 있습니다(시스템 전체 구성이 허용하는 한).

관련 정보