
문제없이 SSH를 사용할 수 있는 원격 서버가 있습니다. 원격 서버('enc'라고 함)와 로컬 컴퓨터에 PostgreSQL(ps)이 설정되어 있으며 둘 다 5432(기본값)에서 실행됩니다. 원격 서버는 외부 연결로부터의 연결을 허용하지 않습니다(로컬 웹 서버가 직접 연결됨).
파일을 복사하고 서버에 로그인하여 수동으로 실행하는 것보다 원격 ps 서버에서 명령을 더 쉽게 실행할 수 있도록 SSH 터널을 설정하려고 합니다.
다음 명령을 실행해 보았습니다.
ssh -N -L 5555:enc:5432 enc
터널이 올바르게 설정된 것처럼 보이지만 다음을 사용하여 원격 시스템에 연결하려고 하면
psql -p 5555
작동하지 않는다고 하네요
psql: could not connect to server: No such file or directory. Is the server running locally and accepting connections on Unix domain socket "/run/postgresql/.s.PGSQL.5555"?
이것이 터널 설정이나 제한된 사용자 권한에 문제가 있을 가능성이 있습니까?(그렇다면 오류가 다를 것이라고 생각합니다)?
답변1
이 시도:
ssh -N -L 5555:enc:5432 localhost
그런 다음
lsof -i :5555
거기에 아무것도 표시되지 않으면 로컬 컴퓨터가 아무 것도 듣고 있지 않은 것입니다.
답변2
유형
netstat -anp | grep LISTEN | grep "port_number"
서버 시스템에서 서비스가 실행 중인 IP 주소를 찾으세요.
머신의 IP 주소인 경우 ssh -L 명령에서 이를 언급해야 하며, 루프백 주소(127.0.0.1 - ipv4 또는 ::1 - ipv6 )인 경우 명령에서 이를 언급해야 합니다.
답변3
그의 문제는 더 아래쪽에 있는 것으로 밝혀졌습니다. 터널은 올바르게 작동하지만 postgres에 연결을 시도하려면 -h를 전달해야 합니다(로컬 호스트의 경우에도 마찬가지임). 그렇지 않으면 TCP(오류가 발생한 바로 그 위치에 있음)를 통해 연결을 시도하고 TCP(이는 오류가 발생함)를 통해 연결을 시도합니다. 터널에서 작동하는 유일한 방법입니다.)