ssh:turnnel
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
ssh:turnnel [2025/04/20 15:08] – 제거됨 - 바깥 편집 (Unknown date) 127.0.0.1 | ssh:turnnel [2025/04/20 15:08] (현재) – rex8312 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== SSH: Turnnel ====== | ||
+ | |||
+ | ===== 요약 ===== | ||
+ | |||
+ | client - 방화벽 - proxy(중계서버, | ||
+ | |||
+ | * (1) server에서 proxy로 접속 | ||
+ | |||
+ | <code bash> | ||
+ | ssh -R 2222: | ||
+ | </ | ||
+ | |||
+ | * (2) client에서 proxy로 접속 | ||
+ | |||
+ | <code bash> | ||
+ | ssh -L 2222: | ||
+ | </ | ||
+ | |||
+ | * (3) client에서 server로 접속 | ||
+ | |||
+ | <code bash> | ||
+ | ssh localhost -p 2222 | ||
+ | </ | ||
+ | |||
+ | * 또는 (2)대신 proxy에서 server에 직접 접속 | ||
+ | |||
+ | <code bash> | ||
+ | ssh {proxy_ip} | ||
+ | ssh localhost -p 2222 | ||
+ | </ | ||
+ | |||
+ | ===== 상세 ===== | ||
+ | |||
+ | 클라이언트의 ~/ | ||
+ | * [[https:// | ||
+ | < | ||
+ | Host * | ||
+ | ServerAliveInterval 120 | ||
+ | </ | ||
+ | |||
+ | 외부에서 접속하고자 하는 서버에서 실행 | ||
+ | |||
+ | <code bash> | ||
+ | ssh -R 2222: | ||
+ | # {server-ip} 는 외부에서 접속이 가능한 서버 | ||
+ | </ | ||
+ | |||
+ | 외부의 클라이언트에서에서 로컬 포트 포워딩으로 서버 접속 | ||
+ | |||
+ | <code bash> | ||
+ | ssh -L 2223: | ||
+ | </ | ||
+ | |||
+ | 다른 창에서 로컬호스트에 접속 | ||
+ | <code bash> | ||
+ | ssh localhost -p 2223 # tb (6006), jupyter (8888)은 웹브라우저로 접속 | ||
+ | </ | ||
+ | |||
+ | 또는, 외부 컴퓨터에서 서버에 접속 후 로컬의 2222에 접속 | ||
+ | |||
+ | <code bash> | ||
+ | ssh {server-id}@{server-ip} | ||
+ | ssh localhost -p 2222 | ||
+ | </ | ||
+ | |||
+ | - [[http:// | ||
+ | - [[https:// | ||
+ | - [[http:// | ||
+ | - [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <code python 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 = ' | ||
+ | init(autoreset=True) | ||
+ | |||
+ | parser = argparse.ArgumentParser() | ||
+ | parser.add_argument(' | ||
+ | args = parser.parse_args() | ||
+ | |||
+ | nx = gethostname() | ||
+ | cmd = 'ssh -R {}: | ||
+ | |||
+ | while True: | ||
+ | print(' | ||
+ | print(Fore.LIGHTBLUE_EX + ' | ||
+ | rus = run(split(cmd)) | ||
+ | print(Fore.LIGHTRED_EX + ' | ||
+ | for _ in trange(30): | ||
+ | time.sleep(1) | ||
+ | </ | ||
+ | |||
+ | {{tag> | ||
+ | |||