매일 다음 명령을 사용하여 원격 서버에 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)에 있도록 하여 루트 권한이 필요할 수 있습니다.