主題: ssh使用
查看單個文章
舊 2004-10-09, 09:59 AM   #2 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

用"scp"拷貝文件

SSH提供了一些指令和shell用來登入遠端伺服器。在預設值情況下它不允許你拷貝文件,但是還是提供了一個"scp"指令。



假定你想把本機電腦當前目錄下的一個名為"dumb"的檔案拷貝到遠端伺服器www.foobar.com上你的家目錄下。

而且你在遠端伺服器上的帳號名為"bilbo"。


可以用這個指令:

scp dumb bilbo@www.foobar.com:.
把檔案拷貝回來用這個指令:



scp bilbo@www.foobar.com:dumb .
"scp"使用SSH進行登入,然後拷貝文件,最後使用SSH關閉這個連接。


如果在你的"~/.ssh/config"文件中已經為www.foobar.com做了這樣的組態:



Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes
那麼你就可以用"fbc"來替代"bilbo@www.foobar.com",指令就簡化為"scp dumb fbc:."。
"scp"假定你在遠端主機上的家目錄為你的工作目錄。



如果你使用相對目錄就要相對於家目錄。
用"scp"指令的"-r"參數允許遞回地拷貝目錄。


"scp"也可以在兩個不同的遠端主機之間拷貝文件。


有時候你可能會試圖作這樣的事:用SSH登入到www.foobar.com上之後,輸入指令"scp [local machine]:dumb ."想用它把本機的"dumb"檔案拷貝到你當前登入的遠端伺服器上。這時候你會看到下面的出錯資訊:

ssh: secure connection to [local machine] refused
之所以會出現這樣的出錯資訊是因為你執行的是遠端的"scp"指令,它試圖登入到在你本機電腦上執行的SSH服務程序……所以最好在本機執行"scp"除非你的本機電腦也執行SSH服務程序。

用"sftp"拷貝文件

如果你習慣使用ftp的方式拷貝文件,可以試著用"sftp"。


"sftp"建立用SSH加密的安全的FTP連接通道,允許使用標準的ftp指令。還有一個好處就是"sftp"允許你通過"exec"指令執行遠端的程序。從2.0.7版以後,圖形化的ftp客戶軟體"gftp"就支持"sftp"。


如果遠端的伺服器沒有安裝sftp伺服器軟體"sftpserv",可以把"sftpserv"的可執行檔案拷貝到你的遠端的家目錄中(或者在遠端電腦的$PATH環境變數中設定的路徑)。


"sftp"會自動啟動這個服務軟體,你沒有必要在遠端伺服器上有什麼特殊的權限。

用"rsync"拷貝文件

"rsync"是用來拷貝、更新和移動遠端和本機文件的一個有用的工具,很容易就可以用"-e ssh"參數和SSH結合起來使用。


"rsync"的一個優點就是,不會拷貝全部的文件,只會拷貝本機目錄和遠端目錄中有區別的文件。而且它還使用很高效的壓縮算法,這樣拷貝的速度就很快。

用"加密通道"的ftp拷貝文件

如果你堅持要用傳統的FTP客戶軟體。SSH可以為幾乎所有的傳輸協定提供"安全通道"。



FTP是一個有一點奇怪的傳輸協定(例如需要兩個連接阜)而且不同的服務程序和服務程序之間、客戶程序和客戶程序之間還有一些差別。


實現"加密通道"的方法是使用"連接阜轉發"。你可以把一個沒有用到的本機連接阜(通常大於1000)設定成轉發到一個遠端伺服器上,然後只要連接本機電腦上的這個連接阜就行了。有一點複雜是嗎?


其實一個基本的想法就是,轉發一個連接阜,讓SSH在後台執行,用下面的指令:



ssh [user@remote host] -f -L 1234:[remote host]:21 tail -f /etc/motd
接著執行FTP客戶,把它設定到指定的連接阜:



lftp -u [username] -p 1234 localhost
當然,用這種方法很麻煩而且很容易出錯。所以最好使用前三種方法。

用SSH設定"加密通道"

"加密通道"的基礎知識

SSH的"加密通道"是通過"連接阜轉發"來實現的。你可以在本機連接阜(沒有用到的)和在遠端伺服器上執行的某個服務的連接阜之間建立"加密通道"。


然後只要連線到本機連接阜。所有對本機連接阜的請求都被SSH加密並且轉發到遠端伺服器的連接阜。當然只有遠端伺服器上執行SSH伺服器軟體的時候"加密通道"才能工作。


可以用下面指令檢查一些遠端伺服器是否執行SSH服務:
telnet [full name of remote host] 22
如果收到這樣的出錯資訊:



telnet: Unable to connect to remote host: Connection refused
就說明遠端伺服器上沒有執行SSH服務軟體。


連接阜轉發使用這樣的指令語法:


ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command]
你不僅可以轉發多個連接阜而且可以在"~/.ssh/config"文件中用"LocalForward"設定經常使用的一些轉發連接阜。

為POP加上"加密通道"

你可以用POP傳輸協定從伺服器上取email。為POP加上"加密通道"可以防止POP的密碼被網路監聽器(sniffer)監聽到。

還有一個好處就是SSH的壓縮方式可以讓郵件傳輸得更快。


假定你在pop.foobar.com上有一個POP帳號,你的用戶名是"bilbo"你的POP密碼是"topsecret"。用來建立SSH"加密通道"的指令是:


ssh -f -C bilbo@pop.foobar.com -L 1234op.foobar.com:110 sleep 5
(如果要測試,可以把"sleep"的值加到500)。執行這個指令之後會提示你輸入POP密碼:
bilbo@pop.foobar.com's password:
輸入密碼之後就可以用"telnet"連線到本機的轉發連接阜了。


telnet localhost 1234
你會收到遠端mail伺服器的"READY"消息。


當然,這個方法要求你手工輸入所有的POP指令,這是很不方便的。可以用Fetchmail(參考how to configure Fetchmail)。


Secure POP via SSH mini-HOWTO、man fetchmail和在"/usr/doc/fetchmail-[…]"目錄下的Fetchmail的FAQ都提供了一些具體的例子。


請注意IMAP傳輸協定使用的是不同的連接阜:IMAP v2的連接阜號為143而IMAP v3的連接阜號為220。

為X加上"加密通道"

如果你打算在本機電腦上執行遠端SSH伺服器上的X程序,那麼登入到遠端的電腦上,新增一個名為"~/.ssh/environment"的文件並加上這一行:


XAUTHORITY=/home/[remote user name]/.Xauthority
(如果在遠端主機上你的家目錄下不存在".Xauthority"這個文件,那麼當用SSH登入的時候就會自動新增)。


比如啟動一個X程序(xterm)可以這個指令:

ssh -f -X -l [remote user name] [remote machine] xterm
這將在遠端執行xterm這個程序。


其它的X程序也是用相同的方法。

為linuxconf加上"加密通道"

Linuxconf(http://www.solucorp.qc.ca/linuxconf/)是Linux的組態工具,它支持遠端管理。Linuxconf的FAQ重說明了如何通過SSH使用linuxconf:
其指令為:


remadmin --exec [link_command] linuxconf --guiproto
如果你想在兩台電腦之間用加密的方式傳送訊息,那麼最好用ssh。


指令是:

remadmin --exec ssh -l [account] linuxconf --guiproto
這是非常有效的而且執行用圖形界面管理電腦。


這種方法需要在客戶端安裝linuxconf。其它的方法還有直接登入到伺服器上用"X11Forwarding"或字元界面執行linuxconf。

為Webmin加上"加密通道"

Webmin(http://www.webmin.com/webmin/)是一個新的關於瀏覽器的組態工具。


它執行在1000連接阜。你可以用SSH的"連接阜轉發"對它進行加密:


ssh -f -l [remote user name] [remote host] -L 1234:[remote host]:10000 tail -f /etc/motd
把瀏覽器指向


http://localhost:1234

版權說明


這篇文章翻譯和改編自:http://www.mandrakeuser.org/secure/index.html。英文版的版權屬於"MandrakeSoft SA and LSTB 1999/2000"。

中文版版權歸譯者brimmer(brimmer@linuxaid.com.cn)和www.linuxaid.com.cn站點所有。
本文遵循Open Content Public Licence
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次