원격 호스트가 로컬 전달 포트에 연결할 수 있도록 허용하는 SSH

원격 호스트가 로컬 전달 포트에 연결할 수 있도록 허용하는 SSH

현재 ssh 옵션 -g(예: 로컬 전달 포트에 대한 원격 호스트 연결)와 관련된 RHEL 7.0 문제에 직면해 있습니다.

일반적인 명령줄을 사용하여 myserver_ip 주소의 서버에서 포트 전달을 통한 연결을 설정하고 있습니다.

ssh -o StrictHostKeyChecking=no user@server_fqn -L9090:other_server_ip:9080 -g

브라우저를 가리키거나 컬을 사용하여 무언가를 가져오려고 하면 연결 거부 예외가 발생합니다.

curl -X GET "http://myserver_ip:9090"
curl: (7) Failed to connect to myserver_ip port 9090: No route to host

Ubuntu 서버에서 동일한 작업을 수행하면 완벽하게 작동하지만 RHEL에서는 작동하지 않습니다.

방화벽, selinux, 심지어 네트워크 연결까지 의심했습니다.

이 문제를 해결/문제 해결하기 위해 다음을 시도했습니다.

  • 방화벽을 비활성화했습니다( service firewalld stop).
  • selinux가 9090을 유효한 http 포트( semanage port -l | grep 9090)로 관리하는지 확인했는데 괜찮았습니다.
  • netstat()을 통해 포트가 열려 있는지 확인했는데 netstat -alptn | grep 9090 괜찮은 것 같습니다. 9090에서 수신 대기하는 SSH 프로세스가 있습니다.
  • 서버가 이더넷 인터페이스( tcpdump -i ens192 'port 9090' -v)의 포트 9090에서 패킷을 수신하는지 확인했으며 실제로 패킷이 수신되었습니다.

따라서 기본적으로 시스템은 인터페이스에서 요청을 수신하고 ssh 프로세스는 지정된 포트의 모든 인터페이스를 수신하지만 ssh 프로세스는 패킷을 상대방으로 전달하지 않습니다.

문제 해결을 위한 리드가 너무 부족합니다. 제안 사항이 있으면 주저하지 말고 도움을 주시면 정말 감사하겠습니다.

감사해요,

답변1

Curl은 이미 답을 알려줬습니다. SSH에 관한 것도 아니고, 방화벽에 관한 것도 아니고, selinux에 관한 것도 아닙니다.

no route to host

컬을 실행 중인 머신은 my server_ip(연결된 IP 주소)를 대상으로 패킷을 어디로 보내야 하는지 모릅니다.

관련 정보