사용자 도구

사이트 도구


ssh:port_forward

SSH: Port Forwarding

요약

client - 방화벽 - proxy(중계서버, 접속가능한 서버) - 방화벽 - server(작업용)

  • (1) server에서 proxy로 접속
ssh -R 2222:localhost:22 {proxy_ip)
  • (2) client에서 proxy로 접속
ssh -L 2222:localhost:2222 {proxy_ip)
  • (3) client에서 server로 접속
ssh localhost -p 2222 
  • 또는 (2)대신 proxy에서 server에 직접 접속
ssh {proxy_ip}
ssh localhost -p 2222

상세

클라이언트의 ~/.ssh/config 에 다음 내용 추가

  Host *
      ServerAliveInterval 120

외부에서 접속하고자 하는 서버에서 실행

ssh -R 2222:localhost:22 -R 6006:localhost:6006 -R 8888:localhost:8888 {server-id}@{server-ip}
# {server-ip} 는 외부에서 접속이 가능한 서버

외부의 클라이언트에서에서 로컬 포트 포워딩으로 서버 접속

ssh -L 2223:localhost:2222 -L 6006:localhost:6006 -L 8888:localhost:8888 {server-id}@{server-ip}

다른 창에서 로컬호스트에 접속

ssh localhost -p 2223  # tb (6006), jupyter (8888)은 웹브라우저로 접속

또는, 외부 컴퓨터에서 서버에 접속 후 로컬의 2222에 접속

ssh {server-id}@{server-ip}
ssh localhost -p 2222
lab.py
import argparse
from subprocess import run
from shlex import split
from socket import gethostname
import time
from colorama import Fore, init
from tqdm import trange
 
SERVER = '${SERVER}'
init(autoreset=True)
 
parser = argparse.ArgumentParser()
parser.add_argument('-P', '--port', default=2222)
args = parser.parse_args()
 
nx = gethostname()
cmd = 'ssh -R {}:localhost:22 {}'.format(args.port, SERVER)
 
while True:
    print('CMD:', cmd)
    print(Fore.LIGHTBLUE_EX + 'Connecting..')
    rus = run(split(cmd))
    print(Fore.LIGHTRED_EX + 'Disconnected, retry after 30 sec.')
    for _ in trange(30):
        time.sleep(1)
ssh/port_forward.txt · 마지막으로 수정됨: 2025/04/20 06:09 저자 rex8312