역방향 SSH - Raspberry Pi 및 AWS

역방향 SSH - Raspberry Pi 및 AWS

USB 모뎀을 통해 인터넷에 연결된 Raspberry Pi가 있습니다. ISP 때문에 아쉽게도 동글 자체의 공용 IP 주소를 얻을 수 없었지만 실제 셀 타워는 얻었습니다.

Pi에서 노드 서버를 실행하려고 하는데 내 네트워크의 어느 곳에서나 외부적으로 액세스해야 합니다.

AWS AMI Linux 서버를 생성하고 역방향 SSH를 활성화했지만 pi에 액세스하기 위해 AWS 서버의 포트에 액세스하려고 할 때마다 아무 일도 일어나지 않습니다.

결론적으로, 3g 동글/모뎀(Huawei E3531) 뒤에 있는 pi에서 노드 서비스가 실행되고 있는데 포트 포워딩을 할 수 없습니다.

나는 NOip을 겪고 싶지 않습니다. 왜냐하면 그것은 나에게 효과가 없기 때문입니다. 저는 Weaved를 사용해 보았는데 제대로 작동합니다. 하지만 문제는 장치의 DNS를 가져오기 위해 매번 웹사이트에 액세스해야 한다는 것입니다. DNS는 30분마다 변경됩니다.

답변1

-R또는 RemoteForward에서 옵션을 찾고 있습니다 ~/.ssh/config. 바라보다 man ssh. 나는 이것에 대해 약간 녹슬었지만 다음과 같이 생각합니다.

ssh -i ~/.ssh/yourAWSkey -R 80:localhost:80 ubuntu@PublicIpAddress

포트 80에서 수신 대기하는 Pi의 모든 웹 서버는 AWS EC2 인스턴스의 PublicIpAddress에 노출되어야 합니다. SSH 포트 전달은 매우 강력하고 매우 유연합니다.

귀하의 질문에 추가로: 원격 전달 포트 22를 사용하면 공용 인터넷에서 Pi로 SSH를 통해 연결할 수 있습니다.하지만 조심하세요- 포트 22에서 EC2 서버에 대한 SSH 액세스가 누락되었습니다(Pi가 연결되어 있는 한). 그러니까 그렇게 하는 게 좋을 거야 ssh -R 443:localhost:22. 그런 다음 PublicIpAddress:443(표준 HTTPS 포트)에 대한 모든 연결을 Pi의 SSH 포트로 전달합니다.

~/.ssh/config또 다른 추가 사항: 다음과 같이 적절한 단락을 설정 해야 합니다 .

Host ec2frontend
    HostName FillInThePublicIpAddress
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/FillInNameOfRSAPrivateKey
    TCPKeepAlive no
    ServerAliveInterval 15
    ServerAliveCountMax 3
    RemoteForward 80 localhost:80
    DynamicForward 8108

ssh ec2frontendWhis는 포트 80의 간단한 연결과 역방향 전달을 허용합니다 .

또 다른 것이 있습니다: 설치하고 싶습니다자동 SSHautossh -M 0 -Nf ec2frontend영구적인 연결을 설정하는 데 사용됩니다 . autossh우분투 저장소에 있으며 위 명령을 사용하여 설치하고 호출하면 SSH를 활성 상태로 유지하고(SSH 터널을 통해 핑) 필요한 경우 재부팅합니다.

관련 정보