다음 명령을 고려해보세요(제가 작성 중인 스크립트의 일부입니다).
ssh -oClearAllForwardings=yes -NL 5555:localhost:5555 foo
ClearAllForwardings=yes
내 SSH 구성에 옵션이 있을 수 있고 이 명령에서 이러한 옵션이 발생하는 것을 원하지 않기 때문에 원합니다 LocalForward
(다른 곳으로 전달되어 이 스크립트를 실행할 때 사용되는 포트에 대해 경고하면 혼란스러울 수 있음).
하지만 ClearAllForwardings=yes
ssh가 완전히 무시하게 만드는 것 같습니다모두나중에 명령줄에 제공되더라도 전달됩니다.
~/.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
( 따라서 연결이 아니라 연결에 연결 ).foo
Hostname foo
ssh bar
foo
bar
어떤 이유로든 편집하고 싶지 않은 경우 ~/.ssh/config
(예: 스크립트 전체 "내부"에 있는 솔루션을 원하는 경우) 다음을 고려하세요.
스크립트를 실행 ssh -oClearAllForwardings=yes -fNMS … foo
한 다음 ssh
포트 전달 추가/제거를 호출하여 기본 프로세스와 통신 할 수 있습니다 ssh -S … -O …
. 바라보다내 다른 답변예를 들어 원격 전달을 추가하는 경우( -R
), 로컬 전달을 추가하는 것도 비슷합니다. 다음과 같은 것이 필요합니다 ssh -S … -O forward -L 5555:localhost:5555 placeholder
.