ControlMaster SSH 세션에서 프로그래밍 방식으로 포트 전달 추가


9

방금 단일 SSH 연결을 사용하여 여러 터미널을 실행할 수있는 OpenSSH의 ControlMaster / ControlPath 기능에 대해 알게되었습니다.

SSH를 사용하여 포트 전달을 사용하여 암호화 및 인증 된 VNC 세션을 얻는 경우가 많으므로 이미 연결이 설정된 원격 서버에 포트 전달을 추가 할 수 없음을 즉시 인식했습니다. 짜증나

때로는 나중에 실행중인 SSH 터미널 세션에서 ~ C를 입력 하여이 제한을 피할 수 있음을 알았습니다. 포트 전달을 추가하거나 제거 할 수있는 명령 줄이 열립니다.

내 질문은 다음과 같습니다. SSH 세션 내 터미널 세션에 액세스 할 필요없이 ControlMaster / ControlPath 기능을 사용하는 기존 SSH 세션에서 포트 전달을 추가하는 방법은 무엇입니까? 안전한 터널링 된 VNC 연결을 시작하는 스크립트를 활성화하여 포트 전달을 추가하고 나중에 제거 할 수 있어야합니다.

(GNU Screen 또는 tmux와 같은 터미널 멀티플렉서를 사용할 수 있다는 것을 알고 있지만 실제로는 이미하고 있습니다. 그러나 서버상의 이유로 하나의 SSH 세션을 사용하는 아이디어가 마음에 듭니다.)


1
당신이 이것을 할 수있는 방법을 찾으면 나는 혼란에 빠질 것입니다. 실제로 SSH 세션의 일부가 아닌 SSH 세션의 속성을 프로그래밍 방식으로 제어하는 ​​것은 큰 보안 문제처럼 보입니다.
Caleb

1
무의미한 말! SSH 세션의 속성을 프로그래밍 방식으로 제어하면 어떻게 큰 보안 문제가 발생합니까? 이 솔루션은 정말 매우 간단합니다 : serverfault.com/a/340361/93109
aculich

문제는 이제 포트 전달을 추가하는 것만 요구하므로 허용되는 답변과 더 잘 일치합니다. 나는 이후에 그것들을 제거하는 방법에 대한 질문을했다 : serverfault.com/q/457295/50950
aef December

답변:


9

실제로는 매우 간단합니다. -O forward기존 명령에 ctl_cmd 를 추가하기 만하면 됩니다.

ssh -M -L5555:localhost:22 remotehost

된다 :

ssh -O forward -M -L5555:localhost:22 remotehost

ssh매뉴얼 페이지 에 대해 설명 -O ctl_cmd옵션 :

-O ctl_cmd
        Control an active connection multiplexing master process.  When the -O option is
        specified, the ctl_cmd argument is interpreted and passed to the master process.
        Valid commands are: “check” (check that the master process is running), “forward”
        (request forwardings without command execution), “exit” (request the master to
        exit), and “stop” (request the master to stop accepting further multiplexing
        requests).

물론 이것은 파일이나 명령 줄 ControlMaster yes에서 활성화했다고 가정합니다 .~/ssh/config-M


1
여기에 관련 질문에 대답 해보세요 수 : serverfault.com/q/457295/50950을
AEF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.