ssh `ClearAllForwardings=yes`로 인해 명령줄의 -L이 무시됩니다.

ssh `ClearAllForwardings=yes`로 인해 명령줄의 -L이 무시됩니다.

다음 명령을 고려해보세요(제가 작성 중인 스크립트의 일부입니다).

ssh -oClearAllForwardings=yes -NL 5555:localhost:5555 foo

ClearAllForwardings=yes내 SSH 구성에 옵션이 있을 수 있고 이 명령에서 이러한 옵션이 발생하는 것을 원하지 않기 때문에 원합니다 LocalForward(다른 곳으로 전달되어 이 스크립트를 실행할 때 사용되는 포트에 대해 경고하면 혼란스러울 수 있음).

하지만 ClearAllForwardings=yesssh가 완전히 무시하게 만드는 것 같습니다모두나중에 명령줄에 제공되더라도 전달됩니다.

~/.ssh/config거기에 도달하는 방법에 대한 정보가 포함되어 있기 때문에 ssh에게 그것을 완전히 무시하라고 말할 수는 없습니다 foo.

그렇다면 ssh가 명령줄에서 특정 포트 전달을 무시 LocalForward하면서도 여전히 허용 하도록 하려면 어떻게 해야 할까요 ?~/.ssh/config

답변1

~/.ssh/config귀하의 개인 파일이며 귀하가 관리합니다. 이 사실을 활용하여 다음과 같이 파일을 정리하십시오.

Host foo bar
   Hostname …
   # common options here

Host foo
   # forwardings here

ssh foo두 부분 모두 일치합니다. 스크립트 ssh -L … bar는 명령이 공통 옵션과 일치해야 합니다.~하지 않을 것이다섹션을 앞으로 일치시킵니다.

당신이 필요로하는 것에주의를 기울이십시오 Hostname. 이전 구성에서 호스트 이름을 지정하지 않은 경우 지금 필요한 것은 foo암시적 호스트 이름이었습니다 ssh foo( 따라서 연결이 아니라 연결에 연결 ).fooHostname foossh barfoobar


어떤 이유로든 편집하고 싶지 않은 경우 ~/.ssh/config(예: 스크립트 전체 "내부"에 있는 솔루션을 원하는 경우) 다음을 고려하세요.

스크립트를 실행 ssh -oClearAllForwardings=yes -fNMS … foo한 다음 ssh포트 전달 추가/제거를 호출하여 기본 프로세스와 통신 할 수 있습니다 ssh -S … -O …. 바라보다내 다른 답변예를 들어 원격 전달을 추가하는 경우( -R), 로컬 전달을 추가하는 것도 비슷합니다. 다음과 같은 것이 필요합니다 ssh -S … -O forward -L 5555:localhost:5555 placeholder.

관련 정보