여러 SSH 터널 연결 관리

여러 SSH 터널 연결 관리

매일 다음 명령을 사용하여 원격 서버에 5~10개의 SSH 터널 연결을 사용합니다.

ssh -Nvvv -L localhost:8866:127.0.0.1:3478 host

저는 이러한 서버 중 일부를 웹 검색용 프록시로 사용하고, 다른 서버에서는 jupyter, tensorboard 또는 기타 유사한 프로그램을 실행하여 개인용 컴퓨터 브라우저의 매핑된 포트에서 액세스할 수 있습니다.

하지만 매번 모든 연결을 시작하고 어떤 포트가 어떤 서버에 매핑되어 있는지 기억해야 하는 것은 짜증나는 일입니다.

그러한 연결을 관리하기 위한 GUI 또는 터미널 기반 도구가 있습니까?

답변1

간단한 접근 방식은 이를 시작하는 Bash 스크립트를 만드는 것입니다. 아래 예제 스크립트는 두 개의 연결을 위해 작성되었습니다. 호출하면 tunnel다음 chmod +x tunnel을 사용할 수 있습니다.

tunnel start

(멱등적으로) 시작하고

tunnel stop

청소하세요.

#!/bin/bash
C1="localhost:8866:127.0.0.1:3478 host1"
C2="localhost:8867:127.0.0.1:3478 host2"
pkill -f "$C1"
pkill -f "$C2"
if [ "$1" = stop ]; then exit 0; fi
sleep 3  # give some time for them to exit, if applicable
nohup ssh -N -L $C1 &> /dev/null &
nohup ssh -N -L $C2 &> /dev/null &

또 다른 접근 방식은 개별적으로 실행되도록 autossh하고 시스템 시작 시 시작되도록 예약하는 것입니다.

마지막으로, /etc/services에서 포트에 대한 기호 이름을 제공할 수 있지만 그렇게 하면 시스템에 일부 구성 혼란이 생기기 시작합니다. 포트가 예약된 범위(< 1024)에 있도록 하여 루트 권한이 필요할 수 있습니다.

관련 정보