用 SSH 來傳輸文件
PuTTY 提供了兩個(gè)文件傳輸工具
- PSCP (PuTTY Secure Copy client)
- PSFTP (PuTTY SFTP client)
PSCP 通過 SSH 連接,在兩臺(tái)機(jī)器之間安全的傳輸文件珍逸,可以用于任何 SSH(包括 SSH v1娶视、SSH v2) 服務(wù)器蓖康。
PSFTP 則是 SSH-2 中新增的特性,使用的是新的 SFTP 協(xié)議飞袋,使用上與傳統(tǒng)的 FTP 類似瞻坝。事實(shí)上 PSCP 如果發(fā)現(xiàn) SFTP 可用,PSCP就會(huì)使用 SFTP 協(xié)議來傳輸文件寞缝,否則還是 SCP 協(xié)議。PSFTP 與 PSCP 相比仰泻,PSFTP 的優(yōu)點(diǎn)是可以與服務(wù)器進(jìn)行交互荆陆,遍歷服務(wù)器上的文件系統(tǒng),在一個(gè)會(huì)話中上傳或下載多個(gè)文件集侯。而 PSCP 只能一次傳輸一個(gè)文件被啼,傳輸完畢后立刻終止會(huì)話。
PSCP 的使用
在控制臺(tái)直接執(zhí)行 pscp 可以看到幫助
C:\Users\lin>pscp PuTTY Secure Copy client Release 0.68 Usage: pscp [options] [user@]host:source target pscp [options] source [source...] [user@]host pscp [options] -ls [user@]host:filespec Options: -V print version information and exit -pgpfp print PGP key fingerprints and exit -p preserve file attributes -q quiet, don't show statistics -r copy directories recursively -v show verbose messages -load sessname Load settings from saved session -P port connect to specified port -l user connect with specified username -pw passw login with specified password -1 -2 force use of particular SSH protocol ver -4 -6 force use of IPv4 or IPv6 -C enable compression -i key private key file for user authentication -noagent disable use of Pageant -agent enable use of Pageant -hostkey aa:bb:cc:... manually specify a host key (may be repe -batch disable all interactive prompts -proxycmd command use 'command' as local proxy -unsafe allow server-side wildcards (DANGEROUS) -sftp force use of SFTP protocol -scp force use of SCP protocol -sshlog file -sshrawlog file log protocol details to a file
- -q 安靜模式棠枉,傳輸文件時(shí)什么也不顯示浓体,否則會(huì)顯示出文件的傳輸進(jìn)度,默認(rèn)是關(guān)閉的
- -P port 指定服務(wù)器的 SSH 端口辈讶,注意這個(gè)是大寫字母 P命浴,默認(rèn)是 -P 22,如果主機(jī)的 SSH 端口就是 22贱除,就不用指定了
- -l user 指定以哪個(gè)用戶的身份登錄主機(jī)生闲,如果沒有指定,則 PSCP 會(huì)在 PuTTY 保存的同名 Session 中獲得默認(rèn)的用戶名稱月幌。用戶名稱也可以和主機(jī)名稱寫在一起碍讯,用 @ 分割開,比如:username@server
- -pw passwd 指定登錄時(shí)所用的口令為 passwd
- -i keyfile 就是指定登錄時(shí)所用的密鑰文件
最后面指定的主機(jī)名也可以是 PuTTY 中保存的 Session 名稱扯躺。比如我們?cè)?PuTTY 中保存了一個(gè)名為 foobarserver 的會(huì)話捉兴,而我們所在的網(wǎng)絡(luò)又的確沒有名為 foobarserver 的主機(jī)名稱。而在這個(gè) foobarserver 會(huì)話中保存的主機(jī)名稱是 demo-server录语,保存的自動(dòng)登錄的用戶是 taylor轴术。
那么用命令 pscp c:\autoexec.bat foobarserver:backup/
就把本地的 c:\autoexec.bat 復(fù)制到了主機(jī) demo-server 上的用戶 taylor 所在的主目錄下的 backup 子目錄中(這個(gè)路徑可能是 /home/taylor/backup
PSCP 的案例就是:
pscp -P 22 -i c:\path\your-private-key.ppk -C username@server:/remote/path/
下面還是用一些實(shí)例來說明會(huì)比較簡(jiǎn)單一些:
把本地的 C:\path\foo.txt 復(fù)制到遠(yuǎn)程主機(jī) 192.168.6.200 的 /tmp 目錄下
pscp c:\path\foo.txt 192.168.6.200:/tmp
把本地的 C:\path\foo.txt 復(fù)制到主機(jī) 192.168.6.200 的 /tmp 目錄下,但是以主機(jī)上的用戶 taylor 的權(quán)限執(zhí)行
pscp c:\path\foo.txt taylor@192.168.6.200:/tmp
或者是
pscp -l taylor c:\path\foo.txt 192.168.6.200:/tmp
把本地的 C:\path\foo.txt 傳送到主機(jī) 192.168.6.200 的 /tmp 目錄下钦无,但是主機(jī)的 SSH 端口是 3122
pscp -P 3122 c:\path\foo.txt 192.168.6.200:/tmp
把本地的 C:\path\foo.txt 復(fù)制到主機(jī) 192.168.6.200 的用戶 taylor 的主目錄下
pscp c:\path\foo.txt taylor@192.168.6.200:.
把主機(jī) 192.168.6.200 上的用戶 taylor 主目錄下的所有 *.tgz 文件拷貝到本地的 c:\backup 目錄中,如果 SSH 版本是 SSH v1失暂,那這個(gè)命令就會(huì)出錯(cuò)彼宠。
pscp taylor@192.168.6.200:*.tgz c:\backup