使用情境
當 在公司你使用的電腦( 假設叫A ) 在防火牆或NAT後(沒有獨立對外的 IP)。
這樣子,你在家裡不能 ssh 連線到 A。
如果公司對外提供一個 ssh server (稱為B) 且該 server 能夠連到 A。
那你可以先 ssh 登入到 B 在 ssh 登入到 A, 缺點是如果你有登入到 A 或從 A 傳送檔案的需求,你都需要兩次登入。
讓我在多做一些假設 讓我在下指令時 少打一些東西
假設
- B 的對外 ip 是 remote_ip
- A 與 B ssh 服務的 port 都是 22
- A 在內網中的 ip 是 host_ip
>>> (at Home) ssh -fN -L 2222:host_ip:22 username_on_B@remote_ip
從此 你在本地端 2222 端口 就是 A(host_ip) 的 22 端口
要 ssh 登入 A 輸入
>>> (at Home) ssh -p 2222 username_on_A@localhost
scp rsync sftp
>>> scp -P 2222 flie_at_Home username_on_A@localhost:/path/to/you/want
>>> rsync "ssh -p 2222" file_at_Home username_on_A@localhost:/path/to/you/want
>>> sftp -oPort=2222 username_on_A@localhost
ssh config (~/.ssh/config)
如果你需要常常重複上述的步驟
設定 ~/.ssh/config
- Host hello
- HostName remote_ip User username_on_B LocalForward 2222 host_ip:22
輸入
>>> (at Home) ssh hello
就等於輸入
>>> (at Home) ssh -L 2222:host_ip:22 username@remote_ip