ssh:turnnel
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| ssh:turnnel [2025/04/20 15:08] – 제거됨 - 바깥 편집 (Unknown date) 127.0.0.1 | ssh:turnnel [2025/10/08 11:42] (현재) – rex8312 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ====== SSH: Turnnel ====== | ||
| + | |||
| + | ===== 요약 ===== | ||
| + | |||
| + | client - 방화벽 - proxy(중계서버, | ||
| + | |||
| + | * (1) server에서 proxy로 접속 | ||
| + | |||
| + | <code bash> | ||
| + | ssh -R 2222: | ||
| + | </ | ||
| + | |||
| + | * (2) client에서 proxy로 접속 | ||
| + | |||
| + | <code bash> | ||
| + | ssh -L 2222: | ||
| + | |||
| + | # 가끔 포트가 사용 불가능할 경우 | ||
| + | ssh -L 10222: | ||
| + | </ | ||
| + | |||
| + | * (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> | ||
| + | |||