이 SSH 터널 명령 오류가 Mac에서는 발생하지만 Linux에서는 발생하지 않는 이유는 무엇입니까?

이 SSH 터널 명령 오류가 Mac에서는 발생하지만 Linux에서는 발생하지 않는 이유는 무엇입니까?

텔넷 서버를 통해 psql 연결을 postgres 데이터베이스 서버로 터널링하려고 하는데 매개변수가 구문 분석되는 방식에 약간의 차이가 있어 한동안 디버깅에 문제가 발생합니다.

bash 5.0.11 및 OpenSSH_8.1p1이 설치된 Linux 시스템에서는 다른 콘솔에서 다음 명령을 사용하여 이 작업을 성공적으로 수행할 수 있습니다.

ssh -N -T -L 50000:pgsql96.database.server:5432 [email protected]

psql -h localhost -p 50000 -d databasename -U user

bash 3.2.57 및 OpenSSH_7.9p1이 설치된 Mac 컴퓨터에서 동일한 터널 명령을 실행할 때

ssh -N -T -L 50000:pgsql96.database.server:5432 [email protected]

다음 오류가 발생합니다.

잘못된 로컬 전달 사양 '50000:pgsql96.database.server:5432[이메일 보호됨]'

결국 위 문자열이 앞으로 텔넷 서버를 참조하고 있기 때문에 명령줄 인수 구문 분석에 차이가 있음을 깨닫고 다음을 추가하여 명령을 수정했습니다 --.

ssh -N -T -L 50000:pgsql96.database.server:5432 -- [email protected]

이러한 매개변수가 두 버전 간에 다르게 구문 분석되는 이유는 무엇이며 이러한 동작 차이는 언제 예상해야 합니까?

관련 정보