使用PuTTY時的文件上傳下載方法


如果你是個PuTTY重度用戶,在使用ssh連上一個遠端機器工作了好一陣子后,發現自己需要對 當前會話 上傳/下載文件,要怎樣才能簡單快捷呢?

最簡單的方式

最簡單的方法: 安裝WinSCP或者Filezilla, 啟動該程序,然后自己輸入輸入主機名、端口、用戶名、密碼登錄,然后在putty里面用pwd命令看看當前目錄,再在WinSCP/Filezilla中跳轉到那個目錄去,再傳送文件.

WinSCP界面(commander風格.另外還支持explorer風格):
winscp main window

優點:上手容易,沒有額外的學習負擔

缺點

  • 繁瑣(為什么還要我再輸入一遍主機名、端口名、登錄用戶名這些?為什么不能復用當前的ssh連接呢?);
  • 而且有多個PuTTY連接時,這邊要上傳,那邊要下載,還得搞明白PuTTY會話與WinSCP/Filezilla窗口的對應關系,否則一不小心就弄混了。

方法一: 用KiTTY + WinSCP/kscp

我們可以用KiTTY(已被薔,不過可以從這里下載:http://www.filehorse.com/download-kitty/, 如果需要帶有kageant/kscp的版本,可從https://chocolatey.org/packages/kitty下載 )來替代PuTTY,因為它支持 一鍵接通winscp和pscp(不再需要你輸入機器名、用戶名、密碼)。當然,你首先得裝這兩個東西(可下載便攜版本放到PATH內)

在KiTTY中,這兩個操作均是在窗口菜單上發起(點擊kitty窗口左上角圖標或者在標題欄點右鍵)
kitty window menu
(此圖裁剪自: Putty You Go Away - Kitty Takes its Place - KossBoss

如果你只是需要上傳一個文件,可以在kitty的窗口菜單上發起Send with pscp命令,

如果你需要下載文件,或者需要傳送多個文件甚至整個目錄,那么可以在kitty的窗口菜單上發起Start WinSCP,kitty與WinSCP結合的優點是你不用再輸入任何信息。

優點: 從KiTTY打開WinSCP時,你不用再輸入主機名/端口/用戶名/密碼。

缺點

  • 如果你一直用得是PuTTY,那么得遷移到KiTTY,這里有遷移成本:KiTTY雖然兼容PuTTY的功能,但session保存在注冊表的不同位置(第一次啟動KiTTY時它會導入PuTTY的sessions,但后來再用PuTTY增加刪除修改的session並不自動刷新到KiTTY里面去)。所以想使用這個kitty的這個功能意味着你要承擔遷移成本(putty的生態要好一些,有不少第三方工具,但這些第三方工具能否工作於KiTTY就不一定了)
  • 另外打開WinSCP后仍然需要手工轉到kitty里面的當前工作目錄,這一點上不如下面的zmodem方便

參考: pscp and WinSCP integration - KiTTY 注意:被薔

方法二:用SuperPuTTY的sftp界面

SuperPuTTY是一個PuTTY的多標簽頁管理程序,但它同時還提供了文件傳輸界面.

[] 圖

優點

  • 可以不必遷移到kitty(不過,SuperPuTTY也支持kitty)
  • 功能直接提供在SuperPuTTY內,沒有安裝、配置其它應用程序的煩惱,比較省事
  • 可以享受SuperPuTTY的其它郵電(比如標簽頁管理,多會話平鋪,自行定義會話,會話查找,腳本化等等)

缺點:

  • 只能從session樹上發起sftp操作,如果session比較多,要針對 當前session 傳送文件,得在樹上找一陣子
  • 得重新輸入密碼(不過SuperPuTTY允許你附加命令行參數給PuTTY/KiTTY,比如-pass "foobar"
  • SuperPuTTY不支持自動導入PuTTY/KiTTY的session,而且導入時要先將原來導入的刪除(否則會造成重復)-原來我覺得這是它的設計缺陷,但后來放棄了PuTTY/KiTTY的session(只將它們用作模板,這個以后再說).

方法三:用zmodem來上傳下載文件

准備工作:

使用方法: 使用的時候就簡單了,

  • 要下載文件的時候在Linux服務器上發起sz somefile.zip命令就行了(跟其它支持zmodem的客戶端不一樣的是,PuTTY-nd不會詢問保存文件的位置,會直接保存到桌面上);
  • 要上傳的時候,在Linux服務器上敲rz命令,PuTTY-nd/KiTTY就會顯示打開文件對話框,讓你選擇要上傳的文件。

優點:

  • 使用起來很方便,不用打開其它程序重新建立ssh連接,也不用一層一層跳轉目錄;
  • 舉一反三,掌握了這個,可在其它支持zmodem的終端上使用,比如Xshell, Mobaxterm, GNu Screen

缺點:

  • 要在服務器上安裝lrzsz包,如果要管理很多台服務器,正式環境也可能不能隨意聯網(這樣第一次如何安裝lrzsz也挺費勁),可能會比較麻煩。
  • 一次只能傳送單個文件,要傳輸一個目錄的話就得用tar或者zip打包;
  • 另外,PuTTY-nd的實現不太穩定(有時不工作?)

KiTTY 也支持zmodem,不過啟用這個功能有點麻煩

  1. %appdata%\KiTTY\kitty.ini里面設置[KiTTY]zmodem=yes
  2. 下載Windows版本的rz.exe和sz.exe(可從http://www.9bis.net/kitty/?file=kitty_zmodem.zip (被土薔)下載或者從LePuTTY的二進制包 里面提取win32-lrzsz-0.12.20-bin.zip
  3. 打開KiTTY,在 Connection/Zmodem 里設置sz.exerz.exe的路徑,以及下載文件的保存地址

使用的時候也有點麻煩

  1. 每個session都要設置(除非你先在 Default Settings 里面設置了,然后新建session時會繼承)
  2. 下載時在linux上輸入sz some_file 后,要在KiTTY窗口菜單上選擇 Zmodem Receive.文件被存到上面設置的目錄(不會讓你選目錄)
  3. 上傳時要先在linux上輸入rz,然后再在KiTTY窗口菜單上選擇 Zmodem Upload

參考:

參考:

方法四:用PuTTY Session Manager + WinSCP/Filezilla

如果你覺得zmodem不太方便/穩定,又不想從PuTTY遷移到KiTTY,那還有沒有其它辦法?好吧,這里還有一個:在PuTTY Session Manager 上發起WinSCP或者Filezilla調用。

PuTTY Session Manager這個小工具的主要是能夠列出所有的putty session(並且你可以將它們組織成樹狀),你只要雙擊節點即可調用putty打開相應的會話(它的一個優點是它支持將session按目錄組織起來)。

puttysm tree

PuTTY Session Manager支持對接WinSCP和Filezilla,可以在右鍵菜單中對選中session發起WinSCP或者Filezilla會話,不再需要輸入主機名/端口/用戶名:

puttysm + winscp

優點:不用自己建立WinSCP的session,同時還可以少輸入服務器地址、用戶名。

缺點

  • 還得自己輸入密碼,因為PuTTY不會讓你保存密碼到session里(當然,你可以在putty session或者pageant里面配置ssh key自動登錄。請參考我上一篇博文: 如何配置ssh免密碼登錄
  • 樹上面節點多了之后,每次要先在這顆樹上找到當前putty會話到底是哪一個,這挺費勁

方法五: 用MobaXterm自帶的sftp面板

MobaXterm 在連接一個ssh會話時會自動在側邊欄顯示sftp面板,可以在這里上傳下載文件(並且支持與Windows程序的文件拖放).

mobaxterm sftp browser

優點: ssh連接時自動顯示sftp面板,並會跟隨shell的目錄變更(另外,MobaXterm也支持zmodem)

缺點:

  • 得從PuTTY遷移到MobaXterm,而MobaXterm雖然有自動導入PuTTY session的功能,但免費版本僅僅支持最多12個會話(規避辦法是不用它的session面板,而是每次打開一個本地終端(local terminal),然后用它里面的ssh命令行來連接遠程服務器)
  • sftp面板逐層目錄進入比較麻煩(如果你在tmux/screen里面工作)
  • zmodem的支持是今年年初在v8.6新加入的功能,還不太穩定,有時候會出錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM