| | 1 | = 2009-02-28 = |
| | 2 | |
| | 3 | * [備忘] 怎麼用 SSH 穿透 NAT 把服務送出來 |
| | 4 | * [目的] 在 NAT 背後的 PC 建立兩個連線,一個 SSH 一個 80 port 送到 SERVER 的 1000 port 跟 8123 port |
| | 5 | * 使用行為一: ADMIN 從 SERVER 的 22 port 連進去後,用 ssh -p 10000 就可以登入 PC 的 SSH |
| | 6 | * 使用行為二: USER 連線 SERVER 的 8123 port 會直接看到 PC 的 80 port |
| | 7 | {{{ |
| | 8 | +----------------+ | | +--------------------------------+ |
| | 9 | | ssh client +------| |----------+ localhost:1000 0.0.0.0:22 +----- ADMIN |
| | 10 | | | | | | | |
| | 11 | | [ PC ] | | | | [ SERVER ] | |
| | 12 | | | | | | | |
| | 13 | | apache(80) +------| |----------+------------------ 0.0.0.0:8123 +----- USER |
| | 14 | +----------------+ | | +--------------------------------+ |
| | 15 | }}} |
| | 16 | * [做法] 在 PC 上定期用 crontab 跑 remote_ssh.sh 這隻 Script |
| | 17 | {{{ |
| | 18 | jazz@PC:~$ cat remote_ssh.sh |
| | 19 | #!/bin/bash |
| | 20 | kill -9 $(pidof ssh) |
| | 21 | nohup ssh -f -N -R 10000:localhost:22 jazz@${SERVER_IP} |
| | 22 | nohup ssh -f -N -R ${SERVER_IP}:8123:localhost:80 jazz@${SERVER_IP} |
| | 23 | }}} |
| | 24 | * [設定] 要達成使用行為二的目的,必須設定 /etc/ssh/sshd_config,加入 GatewayPorts yes 的描述 |
| | 25 | {{{ |
| | 26 | # SSH Port Forwarding |
| | 27 | GatewayPorts yes |
| | 28 | }}} |
| | 29 | }}} |