2007年3月23日

SSH Tunnel心得

剛打的,也就沒什麼前言了,直接看囉~

=============================================================
SSH Tunnel心得:

一直以來都知道SSH其實只是一個加密的Tunnel,本身不像telnet只有提供終端機服務,
但是對SSH的Tunnel並沒有很大的興趣去玩它,又或者說其實是不會玩~

前陣子原本因為PSPad不支援sftp,因此用了一套「Bitvise Tunnelier」的軟體,
它能提供SFTP-FTP的功能,讓PSPad可以透過它連上SFTP機器,
此外,它也有Socks Tunnel的功能,讓我覺得非常方便~

無奈Bitvise Tunnelier需要在右下角有個圖示,而且Linux上不能用,
要做壞事就因此受限了,因此在研究有沒有程式可以做到Socks Tunnel的功能,
又可以跑在背景的~

答案是PuTTY和所屬的plink(PuTTY Link),以下是使用法。

PuTTY作法:
首先從最基本的PuTTY使用法介紹起,要用PuTTY來幫你做SSH Tunnel很簡單,
如下面這篇的作法:
http://www.pumb.org/viewthread.php?tid=155&fpage=1&highlight=

簡單的說,就是按照一般PuTTY使用,填入「Host Name(or IP address)」和「Port」,
接著點選左邊「Connection」->「SSH」->「Tunnels」
接著在「Source port」填入「1080」(你喜歡的port),
點選「Dynamic」,之後按下「Add」

之後按正常方式連線,放著即可~~

PuTTY Link(plink)作法:
PuTTY雖然方便,可是它要開個討厭的視窗,可以不要嗎?
答案就是plink。

首先到PuTTY的網站下載plink.exe,網址如下:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

下面先給個範例:
plink -D 1080 -N -pw ooxx user@xxx.xxx.xxx.xxx

plink其實就是PuTTY的指令版,沒有圖形化的選單,也沒有ANSI支援,但是它有PuTTY的連線能力。
我們會用到的幾個參數介紹如下:
-D Dynamic SOCKS-based port forwarding(其實就是PuTTY點選的「Dynamic」,後面填上喜歡的port
-N don't start a shell/command (SSH-2 only)(雖然僅支援SSH2,但這不是問題,它的功能是不要開啟討厭的SHELL)
-pw 你的SSH密碼
user@xxx.xxx.xxx.xxx 你SSH的帳號和SSH Server的IP

測試後可以連線了,但是依然要開一個命令提示字元的視窗,有辦法關掉它嗎?

這時候我們要靠M$提供的優秀程式「start.exe」了!

只需要執行
start /b plink -D 1080 -N -pw ooxx user@xxx.xxx.xxx.xxx

即可~

要關閉,需要按「Ctrl+Alt+Del」,接著把plink結束執行。

OpenSSH作法:
如果我們需要在Linux或FreeBSD這類機器上做類似的工作呢?我們需要什麼樣的程式?

完全不用,Linux內附的ssh就提供這樣的功能了,它的操作如下:
ssh -f -N -L 1080:: user@xxx.xxx.xxx.xxx

照例,列出它的參數說明:
-f 背景執行
-N 不要執行SHELL
-L 後面填入你要的port,「::」表示省略remote host和remote port
user@xxx.xxx.xxx.xxx 表示你SSH的帳號和SSH Server IP

沒有留言: