wiki:jazz/09-02-28

Version 6 (modified by jazz, 16 years ago) (diff)

--

2009-02-28

  • [備忘] 怎麼用 SSH 穿透 NAT 把服務送出來
    • [目的] 在 NAT 背後的 PC 建立兩個連線,一個 SSH 一個 80 port 送到 SERVER 的 1000 port 跟 8123 port
    • 使用行為一: ADMIN 從 SERVER 的 22 port 連進去後,用 ssh -p 10000 就可以登入 PC 的 SSH
    • 使用行為二: USER 連線 SERVER 的 8123 port 會直接看到 PC 的 80 port
      +----------------+      | |          +--------------------------------+
      |     ssh client +------| |----------+ localhost:1000    0.0.0.0:22   +----- ADMIN
      |                |      | |          |                                |
      |     [ PC ]     |      | |          |         [ SERVER ]             |
      |                |      | |          |                                |
      |     apache(80) +------| |----------+------------------ 0.0.0.0:8123 +----- USER
      +----------------+      | |          +--------------------------------+
      
  • [做法]
    • STEP 1: 用 ssh-copy-id 交換 SSH key - 幫忙加進 SERVER 的 .ssh/authorized_keys
      jazz@PC:~$ ssh-keygen
      jazz@PC:~$ ssh-copy-id .ssh/id_rsa.pub jazz@${SERVER}
      
    • STEP 2: 在 PC 上定期用 crontab 跑 remote_ssh.sh 這隻 Script
      jazz@PC:~$ cat remote_ssh.sh
      #!/bin/bash
      kill -9 $(pidof ssh)
      nohup ssh -f -N -R 10000:localhost:22 jazz@${SERVER}
      nohup ssh -f -N -R ${SERVER}:8123:localhost:80 jazz@${SERVER}
      
    • STEP 3: 要達成使用行為二的目的,必須在 SERVER 上設定 /etc/ssh/sshd_config,加入 GatewayPorts yes 的描述
      jazz@SERVER:~$ cat >> /etc/ssh/sshd_config < EOF
      # SSH Port Forwarding
      GatewayPorts yes
      EOF
      

Cloud Computing