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























