SSH的應用場景
應用一:使用scp命令遠程拷貝文件
如前面所介紹的測試SSH服務器的功能步驟所示,SSH提供了一些命令和shell用來登錄遠程服務器,在默認情況下其并不允許用戶拷貝文件。但為了方便用戶使用,它還是提供了一個“scp”命令,用戶可以使用該命令來進行文件的遠程拷貝工作。
假定用戶想把本地計算機當前目錄下的一個名為“share”的文件拷貝到遠程服務器www.remote.com上用戶的家目錄下。而且用戶在遠程服務器上的賬號名為“super”??梢杂眠@個命令:
scp share super@www.foobar.com:.
把文件拷貝回來用這個命令:
scp super@www.remote.com:share.
“scp”調用SSH進行登錄,然后拷貝文件,最后調用SSH關閉這個連接如果在用戶的“~/.ssh/config”文件中已經為www.foobar.com做了這樣的配置:
Host *fbc
HostName www.remote.com
User super
ForwardAgent yes
那么用戶就可以用“fbc”來代替“bilbo@www.foobar.com”,命令就簡化為“scp dumb fbc:.”。“scp”假定用戶在遠程主機上的家目錄為用戶的工作目錄。如果用戶使用相對目錄就要相對于家目錄。
用“scp”命令的“-r”參數(shù)允許遞歸地拷貝目錄。“scp”也可以在兩個不同的遠程主機之間拷貝文件。
在使用的過程中,有時候用戶可能會試圖進行如下操作:用SSH登錄到www.remote.com上之后,輸入命令“scp [local machine]:share .”想用其把本地的“share”文件拷貝到用戶當前登錄的遠程服務器上。這時候用戶會看到下面的出錯信息:
ssh: secure connection to [local machine] refused
之所以會出現(xiàn)這樣的出錯信息是因為用戶運行的是遠程的“scp”命令,該命令試圖登錄到在用戶本地計算機上運行的SSH服務程序,而這樣做是不允許的,除非用戶的本地計算機也運行著SSH服務程序。
應用二:使用SSH設置“加密通道”
SSH的“加密通道”是通過“端口轉發(fā)”來實現(xiàn)的。用戶可以在本地端口(沒有使用過的)和在遠程服務器上運行的某個服務的端口之間建立“加密通道”。所有對本地端口的請求都被SSH加密并且轉發(fā)到遠程服務器的端口。當然只有遠程服務器上運行SSH服務器軟件的時候“加密通道”才能工作??梢杂孟旅婷顧z查一些遠程服務器是否運行SSH服務:
telnet [遠程主機的名字全稱] 22
如果收到這樣的出錯信息:
telnet: Unable to connect to remote host: Connection refused
就說明遠程服務器上沒有運行SSH服務軟件。
端口轉發(fā)使用如下的命令語法:
ssh -f [遠程主機上的用戶名] -L [本地端口號]:[遠程主機的名字全稱]:[遠程端口] [命令]
不僅可以轉發(fā)多個端口,而且可以在“~/.ssh/config”文件中用“LocalForward”設置經常使用的一些轉發(fā)端口。
(1)為POP加上“加密通道”
可以使用POP協(xié)議從服務器上取E-mail。為POP加上“加密通道”可以防止POP的密碼被網絡監(jiān)聽器(sniffer、TCPDUMP等軟件)監(jiān)聽到。還有一個好處就是SSH的壓縮方式可以讓郵件傳輸?shù)酶臁?/p>
假定用戶在pop.foobar.com上有一個POP賬號,用戶的用戶名是“bilbo”,用戶的POP口令是“topsecret”。用來建立SSH“加密通道”的命令是:
ssh -f -C bilbo@pop.foobar.com -L 1234:pop.foobar.com:110 sleep 5
(如果要測試,可以把“sleep”的值加到500)。運行這個命令之后會提示用戶輸入POP口令:
bilbo@pop.foobar.com's password:
輸入口令之后就可以用“telnet”連接到本地的轉發(fā)端口了。
telnet localhost 1234
用戶會收到遠程mail服務器的“READY”消息。當然,這個方法要求用戶手工輸入所有的POP命令,這是很不方便的。可以用Fetchmail(參考how to configure Fetchmail)。Secure POP via SSH mini-HOWTO、man fetchmail和在“/usr/doc/fetchmail-[…]”目錄下的Fetchmail的FAQ都提供了一些具體的例子。
(2)為X加上“加密通道”
如果用戶打算在本地計算機上運行遠程SSH服務器上的X窗口系統(tǒng)程序,那么登錄到遠程的計算機上,創(chuàng)建一個名為“~/.ssh/environment”的文件并加上這一行:
XAUTHORITY=/home/[remote user name]/.Xauthority
比如啟動一個X程序(xterm)可以這個命令:
ssh -f -X -l [remote user name] [remote machine] xterm
這將在遠程運行xterm這個程序。其他的X程序也是用相同的方法。
(3)為Linuxconf加上“加密通道”
Linuxconf是Linux的配置工具,支持遠程管理。使用linuxconf的命令為:
remadmin --exec [link_command] linuxconf --guiproto
如果用戶想在兩臺計算機之間用加密的方式傳送信息,那么最好使用ssh。命令是:
remadmin --exec ssh -l [account] linuxconf --guiproto
這是一種非常有效的采行圖形界面管理計算機的方式。這種方法需要在客戶端安裝linuxconf。其他的方法還有直接登錄到服務器上用“X11Forwarding”或字符界面運行l(wèi)inuxconf。