第一個(sftp安全檔案傳輸)是一個類ftp的用戶端程式,它能夠被用來在網路中傳輸檔案。
它並不使用FTP守護進程(ftpd或wu-ftpd)來進行串連,而是有意義地增強系統的安全性。
實際上,通過監視一些系統中的log檔案,我們可以注意到最近一個月中有80%的攻擊是針對於ftpd守護進程的。
sftp避免了這些攻擊從而可以停止在wu-ftpd上潛在的危險。
第二個(scp安全性複製)被用來在網路上安全地複製檔案。它替代了不安全的rcp命令。
Sftp和scp從串連到sshd伺服器上後,不需要任何專用的守護進程。為了使用sftp和scp你必須插入以下兩行在設定檔/etc/ssh2/sshd2_config中:
subsystem-sftp sftp-server
在這些修改之後,你必須重新啟動sshd.
然後你就可以使用sftp和scp串連到運行sshd的主機上了。
Sftp
Sftp使用在資料連線上使用ssh2,所以檔案的傳輸是儘可能地安全。
使用sftp代替ftp兩個主要的的原因是:
1、Password從不用明文傳輸,防止sniffer(嗅探器)的攻擊。
2、資料在傳輸時被加密,使用刺探和修改串連非常困難。
而使用sftp2是非常簡單的。讓我們假設你使用了你的帳戶:myname通過sftp連按上了主機host1。
可以使用命令:
sftp myname@host1
一些選項能夠在命令列中被指定(詳細情況請查看sftp manul)
當sftp2準備好了來接受串連時,它將顯示一個狀態提示符 sftp>。在sftp手冊中有完整的使用者可以使用的命令列表;其中有:
·quit:
從這個應用程式中退出。
·cd directory:
改變當前的遠程工作目錄。
·lcd directory:
改變當前的本地工作目錄。
·ls [ -R ] [ -l ] [ file ... ]:
列出在遠地伺服器上的檔案名稱。如果是目錄,則列出目錄的內容。當命令列中指定了-R,則遞迴地顯示分類樹。
(預設情況下,子目錄並不被訪問)。當命令列中指定了-l,檔案與目錄的許可權,屬主,大小和修改時間被列出。
當沒有參數被指定,則.(目前的目錄)的內容被列出。普通情況下選項-R和-l是互相不相容的。
·lls [ -R ] [ -l ] [ file ... ]:
與ls一樣,但是是對於本地檔案操作。
·get :
從遠程端傳送指定的檔案到本地端。目錄內容被遞迴地複製。
·put [ file ... ]:
從本地端傳送指定的檔案到遠地端。目錄內容被遞迴地複製。
·mkdir dir (rmdir dir):
嘗試建立或刪除參數中指定的目錄。
萬用字元對於ls,lls,get和put是支援的。格式在sshregex手冊中有描述。
從sftp使用加密技術以來,一直有一個障礙:連線速度慢(以我的經驗有2-3倍),但是這一點對於非常好的安全性來講只能放在一邊了。在一個測試中,在我們區域網路上的Sniffer可以在一個小時中捉住ftp串連上的4個password.
sftp的使用可以從網路上傳送檔案並且除去這些安全問題。
Scp
Scp2(安全性複製)被用來從網路上安全地複製檔案。它使用ssh2來進行資料傳送:它使用的確認方式和提供的安全性與ssh2一樣。
這可能是一種最簡單的方法從遠地機器上複製檔案了。讓我們假設你要使用你的帳戶mmyname,複製在local_dir目錄中的filename
檔案到遠地的主機host1上的remote_dir目錄中。使用scp你可以輸入:
scp local_dir/filename myname@host1:remote_dir
在這種方式下檔案filename被複製成相同的名字。萬用字元可以使用(讀一讀sshregex手冊)。命令列:
scp local_dir/* myname@host1:remote_dir
從目錄local_dir複製所有檔案到主機host1的目錄remote_dir命令:
scp myname@host1:remote_dir/filename .
複製檔案filename從host1的目錄remote_dir到本地目錄。
scp支援許多選項並且允許在兩個遠地系統之間複製檔案:
scp myname@host1:remote_dir/filename myname@host2:another_dir
詳情請查閱手冊
顯然,使用scp,你必須知道遠程機器的確切目錄,所以在實際上sftp經常被作為首選使用。