하나의 기본 OpenSSH 연결을 통한 여러 SSH 터널(로컬 및 원격 전달)이 있습니까? 좋은 생각?

하나의 기본 OpenSSH 연결을 통한 여러 SSH 터널(로컬 및 원격 전달)이 있습니까? 좋은 생각?

질문설정된 SSH 채널 사용가지다답변이것이 나의 관심을 불러일으켰습니다. 기존 SSH 연결을 재사용할 수 있음을 보여줍니다. 그러나 더 자세히 읽어보니 이 솔루션이 내 경우(동시에 여러 터널)에는 작동하지 않을 수 있다는 사실을 발견했습니다.

저는 2012년 3월 14일자 OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1(Kubuntu 12.04)을 사용하고 있습니다.

현재 bash 스크립트에서 수행 중인 작업은 다음과 같습니다.

echo "establishing SSH tunnel for SFTP && opening Dolpin with SFTP connection to remote computer..."
ssh -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" -fL $PORT_NUMBER:localhost:$PORT_NUMBER sleep 20; dolphin sftp://HostSftp:$PORT_NUMBER &

echo "establishing SSH tunnel for VNC && connecting to VNC server for remote desktop support..."
sudo ssh -fL 5901:localhost:$VNC_PORT_NUMBER -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" sleep 20; vncviewer localhost:5901

내 우려 사항(및 이것이 나에게 효과가 없을 수 있다고 생각하는 이유)은 다음과 같습니다.

단점은 ssh의 일부 사용이 다중 연결에서 작동하지 않을 수 있다는 것입니다. 가장 주목할만한 것은 git, svn 또는 rsync와 같은 터널링 또는 포트 전달을 사용하는 명령입니다.원천

이:

구성 파일에서 LocalForward 또는 RemoteForward를 사용하는 경우 미묘한 문제가 발생할 수 있습니다. ...SSH1(하지만 OpenSSH는 아닙니다) 솔루션을 제공합니다.원천

나는 설명과 설명을 찾고 있습니다.

  1. 하나의 기본 연결로 위의 두 터널을 설정할 수 있습니까?
  2. 별도의 연결을 설정하는 것만큼 안정적입니까?
  3. 위의 두 가지 사항이 모두 해당되면 어떻게 해야 합니까?

감사해요

답변1

기본 연결을 사용해도 연결 공유( -S, -M, -o ControlXXX)와 관련된 옵션을 제외하고 ssh를 호출하는 방법은 변경되지 않습니다. 마스터 연결에서 변경되는 모든 것은 마스터 연결이 이미 설정된 경우 새 슬레이브 연결이 다시 인증하는 대신 해당 연결을 통과한다는 것입니다. 이렇게 하면 비밀번호나 키를 제공할 필요가 없어져 새로운 연결 설정 속도가 크게 빨라집니다.

멀티플렉싱은 애플리케이션에 영향을 주지 않습니다. 방화벽의 경우에는 다릅니다. 여러 연결이 아닌 하나의 연결만 있습니다.

왜인지는 모르겠지만신카트"ssh는 멀티플렉싱된 연결에서 작동하지 않을 수 있습니다. 특히 git, svn 또는 rsync와 같은 터널링 또는 포트 전달 명령이 있습니다." 멀티플렉싱 없이 작동한다면 애플리케이션이 차이점.

이것SSH에 대한 최종 가이드연결 다중화를 의미하는 것이 아니라 "구성 파일에서 LocalForward 또는 RemoteForward를 사용하십시오". (이 책은 연결 멀티플렉싱이 존재하기 이전으로 거슬러 올라갑니다.) 이는 특정 포트에서 수신 터널을 한 번만 설정할 수 있음을 의미합니다. 이는 재사용에 관한 것이 아니라 전달에 관한 것입니다.

멀티플렉싱 사용을 시작하려면 다음 줄을 에 추가하세요 ~/.ssh/config.

ControlMaster auto
ControlPath ~/.ssh/%l_%h_%p_%r.multiplex

그게 다야. 호스트에 대한 연결을 설정하고 명시적으로 종료될 때까지 이를 유지하려면 를 실행하십시오 ssh -N destination &. 더 이상 기본 연결이 필요하지 않으면 클라이언트를 종료하십시오. 여전히 이전과 같이 터널을 설정해야 합니다.

호스트를 여러 가지 릴레이로 사용하는 경우에는 다음을 설정하는 것이 좋습니다.양말대리인. ssh -D 1234 destinationSOCKS 인식 애플리케이션을 실행 하고 에 있는 SOCKS 프록시를 사용하도록 지시합니다 localhost:1234. 물론 이는 SOCKS를 이해하는 애플리케이션에서만 작동합니다.양말SOCKS를 인식하지 않는 애플리케이션에 대한 대부분의 네트워크 연결은 SOCKS 프록시를 통과합니다(tsocks는 라이브러리 호출을 래퍼 기능으로 리디렉션하여 작동합니다).

관련 정보