PuTTY免用戶名和密碼登錄

  1. 首先打開puttygen密匙生成工具

    PuTTY免用戶名和密碼登錄

  2. 2

    打開之後,選擇按鈕“Generate”

    PuTTY免用戶名和密碼登錄

  3. 3

    此進度指示密匙正在計算生成中,此刻,請在紅框標識的空白區域內隨意移動光標,以便生成隨機數

    PuTTY免用戶名和密碼登錄

    PuTTY免用戶名和密碼登錄

  4. 4

    保存私匙,

    密匙生成完畢之後,點擊 "Save Private Key"(保存私匙)

    PuTTY免用戶名和密碼登錄

  5. 5

    選擇一個合適的存儲路徑在生成的(.ppk)私匙文件進行保存,文件名中需要最好填入一個見名知意的名字

    PuTTY免用戶名和密碼登錄

  6. 6

    保存私匙之後,路徑內會出現一個*.ppk的私匙文件

    PuTTY免用戶名和密碼登錄

  7. 複製公匙,

    私匙保存之後,需要將公匙複製一份,稍後將要保存在遠程服務器上一份

    PuTTY免用戶名和密碼登錄

  8. 使用putty登陸到遠程主機,家目錄下有一個隱藏的文件夾.ssh,

    PuTTY免用戶名和密碼登錄

  9. 進入到隱藏文件夾 .ssh,並創建一個文件:authorized_keys

     

    PuTTY免用戶名和密碼登錄

  10. 按下快捷鍵:SHIFT+INSERT,將公匙內容粘貼至此,

    PuTTY免用戶名和密碼登錄

  11. 打開PuTTY,在Host Name[or IP address]下輸入:遠程主機的名字或者IP

    PuTTY免用戶名和密碼登錄

  12. 依次從Putty左側導航樹選擇:Connection(連接)--- Data(數據),

    然後在右側,Auto-login username中,填入遠程主機的登錄用戶名

    PuTTY免用戶名和密碼登錄

  13. 從左側導航樹中依次選擇:Connection(連接)---SSH--- Auth(認證),

    然後在右側,點擊“Browse”(瀏覽)按鈕,選擇先前保存的,後綴名爲.ppk的私匙

    PuTTY免用戶名和密碼登錄

  14. 從左側導航樹依次選擇:Session---Save Sessions---Save,

    對剛纔所做的配置進行保存

    PuTTY免用戶名和密碼登錄

  15. 保存之後,以後我們打開PuTTY連接設置過的遠程主機,就不必輸入用戶名和密碼了,直接雙擊已保存的對應Session配置,即可成功登陸遠程服務器

    PuTTY免用戶名和密碼登錄

  16. 最終,雙擊保存的對應Session,成功的免用戶名和密碼登錄了

    PuTTY免用戶名和密碼登錄

 

設置Putty SSH使用密鑰登錄Linux VPS主機

第一步、生成密鑰

看到很多教程有提到用puttygen.exe文件可以生成密鑰的,但是可能會出現Server refused our key這樣的登陸錯誤,所以我們這裏直接使用VPS遠程設置密鑰,然後下載到本地。

VPS生成密鑰

根據上圖的演示,登陸到SSH之後,我們先輸入ssh-keygen -t rsa 然後會要求我們確定 路徑我們直接回車會自動創建/root/.ssh文件夾目錄,然後回車後出入密鑰密碼,輸入兩次繼續回車密鑰就可以在目錄中看到。

我們把root/.ssh目錄中的id_rsa和id_rsa.pub下載到本地備份等會需要使用。

第二步、修改sshd配置文件

A - 將root/.ssh中的id_rsa.pub修改名字爲authorized_keys 並且用chmod 600 authorized_keys設置權限。

B - 找到/etc/ssh/sshd_config ,把RSAAuthentication和PubkeyAuthentication兩行前面的#註釋去掉。

C - 重啓SSHD服務。

Debian/Ubuntu執行:/etc/init.d/ssh restart
CentOS執行:/etc/init.d/sshd restart

第三步、客戶端配置密鑰

我們打開puttygen.exe文件,載入密鑰。

載入密鑰

輸入在SSH中設置的密鑰密碼。

輸入密鑰密碼

保存私鑰。

保存爲私鑰

保存的文件名可以設置爲id_rsa.ppk,也可以自定義名字但後綴必須是PPK,後面我們有需要用到。

第四步、設置PUTTY認證鏈接

putty-5

瀏覽PPK文件

正常的登陸,開始可能需要我們輸入密鑰密碼。

輸入密鑰密碼登錄PUTTY

第五步、再次修改SSHD配置文件

修改/etc/ssh/sshd_config 文件中找到PasswordAuthentication後面的yes改成no

然後重啓sshd

Debian/Ubuntu執行:/etc/init.d/ssh restart
CentOS執行:/etc/init.d/sshd restart

這樣我們的putty登陸使用密鑰也配置完成,即便他們知道我們的ROOT密碼也不好登陸,所以到本地的幾個文件需要確保安全,只要你本機電腦安全,你的VPS就相對足夠的安全。

 

等進度條走完之後,會出現下面的界面

wKioL1gkHvjQ10XBAAECpoZBc9Q624.png-wh_50

最上面那個大大的只讀文本框裏面是公鑰,用來保存到 OpenSSH 的 authorized_keys 文件中,這個文件中的每一行都是一個公鑰。默認情況下,這個文件位於 Linux 用戶主目錄的 .ssh/ 子目錄中,如果文件和目錄都不存在,可以直接創建。

但 是創建的文件、目錄和用戶主目錄($HOME, $HOME/.ssh, $HOME/.ssh/authorized_keys)的權限有個限制就是對除了本帳戶的其他所有帳戶都要求是隻讀的,否則的話,即使公鑰、私鑰都匹配 無誤,也是無法登入系統的。這是 SSH 服務器的一個安全要求,因爲如果別的帳戶可以修改你的 authorized_keys 的話,惡意的增加一個公鑰,那對方不用你的帳戶口令也能以你的帳戶登入系統了。對於一些特殊要求,你可以在 SSH 服務器的配置文件 sshd_config 中用指令

StrictModes no

來取消這個限制。在 sshd_config 的幫助手冊中可以看到

     StrictModes
             Specifies whether sshd should check file modes and ownership of
             the user’s files and home directory before accepting login.  This
             is normally desirable because novices sometimes accidentally
             leave their directory or files world-writable.  The default is
             “yes”.

小技巧:每次修改 authorized_keys 這個文件時,你可以用如下的命令來修改,確保所有的文件屬性和權限無誤

mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys \
&& chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys && vim $HOME/.ssh/authorized_keys

還有一個要強調的是那個 Key comment,這是密鑰的註釋,一定要修改。因爲這個密鑰是給自己用的,所以最起碼要輸入自己的名字,用默認的註釋很容易和其他人的密鑰混淆的。如果擔 心自己的密碼忘記了,可以在後面加上密碼提示,當然了,不要讓別人用註釋猜出你的密鑰口令。比如,我可以把註釋修改爲

ChaiFeng [20061120] w.z.

後面的 w.z. 就是我的密碼提示,能猜出來麼?呵呵

輸入註釋,上面的公鑰也會隨之發生變化。
現在最重要的是,輸入自己的密鑰口令。就是 Key passphrase 和 Confirm passphrase 這個兩個輸入框。
如果不輸入口令,直接保存私鑰會看到這個提示。爲了安全起見還是輸入口令吧,要不任何人得到這個私鑰都可以不用口令登入系統了


最後單擊 Save private key 來保存私鑰吧,保存到自己認爲安全的地方,比如存放到私人的 USB 閃存盤上。需要登錄時,插上 USB 閃存盤。登錄完畢後就可以把 USB 閃存盤取下來,哈哈,這樣子就比較安全了。
大 家也注意到了,還有個 Save public key 按鈕,這個是保存 SSH2 格式的公鑰,有些 SSH 服務器要求用這種格式的公鑰文件。一般情況下,我們是不需要的,所以這裏也就保存了。以後還想的話,就用 PuTTYgen 把私鑰 Load 出來,然後再保存也可以。

 

用密鑰登錄服務器的流程

上面雜七雜八的說了一堆創建密鑰時的事情,大家會不會已經有些亂了呢?我把這個過程再羅列一遍:

  1. 如果沒有公鑰/密鑰對,就用 PuTTYgen 創建一個,已經有了就可以忽略這一步。一個公鑰/密鑰對可以用在不同的服務器上,所以也不需要重複創建,關鍵要有足夠強健的密碼和安全的存放。

  2. 象先前一樣輸入帳戶名和口令登錄到主機上。

  3. 輸入如下命令,來編輯 authorized_keys 文件mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys \&& chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys && vim $HOME/.ssh/authorized_keys
     

  4. 把這個文本框裏的公鑰粘貼到 vim 中去,需要說明幾點:這個文本框裏的內容是一行的,粘貼到 vim 中時,別忘了按字母 o 這個鍵,否則的話,粘貼進去後,開頭的 ssh-rsa 會變成 sh-rsa,爲什麼呢?哈哈,想想吧。爲什麼不按字母鍵 i 呢?這個在 vim 中不就是插入麼?原因是我很懶,按字母 o,我可以節省一次按回車鍵。雖然按大寫 O 也行,那我不是還得再按一下 Shift 鍵麼?別 忘了,在 PuTTY 中默認的粘貼可是按鼠標右鍵哦,然後按一下 ESC 鍵,然後輸入 :wq 保存退出,等等,大家先彆着急的輸入 :wq,既然輸入冒號還得按下 Shift 鍵,那我們就乾脆直接兩下大寫的字母 Z,也就是 ZZ。怎麼樣?vim 也一樣保存退出了吧。這次又節省了一次按鍵和兩次尋找字母的移動,把懶得優良傳統再一次在實踐中發揚光大。

  5. 如果已經有了私鑰,第4步裏的那個公鑰忘記保存了,就用 PuTTYgen 把這個私鑰 Load 上去,然後重新複製一下公鑰吧。

  6. 在 PuTTY 的配置 Connection->SSH->Auth 這裏面,指定上私鑰,然後記得保存 Session,以後就不需要重複這一步了。

  7. 最好也指定上自動登錄的用戶名,還記得這裏嗎?

  8. 開始登錄吧,這次你會看到一個不同於以往的登錄提示現 在輸入的口令可不是主機上這個賬戶的口令了,而是先前創建的這個密鑰的口令。以後不管這個賬戶的口令是什麼,即使再複雜,也和我們沒關係了。只要這個賬戶 的 $HOME/.ssh/authorized_keys 文件中,有我們的公鑰,我們就隨時用匹配的私鑰都可以登錄了。配合後面提到的 Pagent,我們連輸入密鑰口令這一步也可以忽略過去。

  9. 登錄成功了,別忘了按 Ctrl+d 註銷哦。

以後這些步驟就不需要再重複了,只需要打開 PuTTY 後,雙擊一下保存的會話名稱,輸入密鑰口令。

 

 

Pagent 加載密鑰,每次開機後只需要輸入一次密鑰口令

終於輪到 Pagent 出場了,雙擊一下 Pagent.exe,嗯,沒反應?再雙擊一下,咦?出來個提示,說已經運行了。

看看右下角吧,在這裏呢

雙擊一下 Pagent 的圖標,出來這樣一個界面。很簡潔的,Add Key 是添加私鑰,Remove Key 是把選中的私鑰從 Pagent 中卸載了。

好,現在單擊 Add Key 按鈕添加私鑰,我把這個演示用的私鑰保存到 C:\ 了

然後會出現輸入密鑰口令的對話框,輸入正確的密鑰後,單擊 OK

這時,在 Pagent 的窗口中就能看到我們的私鑰已經裝載上去了。

現在打開 PuTTY,選擇先前保存的 Session,雙擊一下。只要自動登錄用戶名設置上,主機上改帳戶的 authorized_keys 文件裏也有匹配的公鑰。哈哈,發現沒有?完全不需要口令,我們已經登錄到系統了。
在 Pagent 的圖標上點右鍵,也可以快捷的選擇已經保存的會話。

建 議大家把 Pagent 放到啓動組裏面,這樣每次一開機,Pagent 自動運行,然後我們只需要把私鑰裝載一下,然後我們就可以一直享受自動登錄系統的樂趣了。再配合上以後會講到的 Plink、PSCP 這些,我們可以實現很多工作的自動化進行。完全不需要每次輸入用戶名、口令、輸入又長又多的命令,再做一些煩躁的文件備份,最後還得記得註銷系統,難道不 覺得麻煩麼?這一切煩惱很快就會遠離我們了,繼續往下看吧。


 


 

 

備份 PuTTY 的設置

用 PuTTY 最不爽的就是,它把所有的設置都保存到註冊表了,本來這不是什麼問題。但是難免會重裝一下機器,用下面的命令可以備份 PuTTY 的所有設置

regedit /e PuTTY.config.reg "HKEY_CURRENT_USER\Software\SimonTatham\PuTTY"
 

 

刪除 PuTTY 的設置

如果只是在其他機器上臨時用了一個 PuTTY,用完以後想刪除 PuTTY 的配置,就在控制檯裏輸入如下的命令:

putty.exe -cleanup

 

 

PuTTY的自動登錄設置

puttytips

 閱讀約 3 分鐘

PuTTY是Windows下非常好用的SSH遠程登陸客戶端。本文介紹兩種自動登錄的設置方法。

1. 使用快捷方式自動登錄

  1. 創建Session: 打開PuTTY,Session選項卡中填寫Host NamePortSaved Sessions(假定名稱爲"session_name")。

  2. 桌面創建PuTTY.exe的快捷方式。

  3. 右鍵快捷方式,屬性>快捷方式>目標,加入如下三個參數:

    X:\yourpath\putty.exe -load "session_name" -l "username" -pw "password"
    

    session_name, username, password 替換爲自己的賬號信息。

  4. 點擊應用保存,搞定。

2. 使用密匙自動登錄

  1. 下載PuTTYgen,打開後點擊generate,不斷點擊進度條下空白區域直到生成密匙。

  2. 點擊Save private key將私匙保存起來(假定存到X:\mykey.ppk)。彈出設定passphrase的提示可以無視。

  3. 登陸到遠程節點,在~(home/username)路徑下創建".ssh"文件夾,確保這個文件夾只有自己擁有操作權限:

    $ mkdir -m 700 .ssh
    
  4. 進入文件夾,創建公匙文件"authorized_keys",將PuTTYgen文本框中生成的公匙複製粘貼過來,保存:

    $ cd .ssh
    $ vi authorized_keys
    # Paste the public key and save
    
  5. 打開PuTTY,進入Connection/SSH/Auth選項卡,在Private key file for authentication:一欄中填入私匙地址(X:\mykey.ppk)。

  6. 回到PuTTY的Session選項卡,將5.的更改保存一下,搞定。



額外附送:如果已經懶到打開PuTTY再登陸節點都嫌麻煩的話,可以用快捷方式使登陸更容易,接上面第4步:

  • 新建一個PuTTY的快捷方式,右鍵,屬性>快捷方式>目標,加入如下參數後保存:

    X:\yourpath\putty.exe -i "X:\mykey.ppk" [email protected]
    

    引號內爲私匙路徑,username 爲用戶名,123.45.67.89 爲遠程節點的IP,這樣設置後快捷方式可直接調用PuTTY的default配置登陸目標節點。如果想要調整終端的色彩和字體,更改default配置即可。

https://segmentfault.com/a/1190000000639516

 

可能會遇到連接不上和亂碼問題。

問題1:使用putty登錄顯示network error:Connection refused

解決方法:
  1.gedit /etc/ssh/sshd_config    將PermitRootLogin的註釋取消,或者將no改爲yes。(如果沒有sshd_config文件說明linux上沒有安裝SSH,使用sudo apt-get install ssh安裝之後,sshd-config文件中PermitRootLogin選項默認的是yes,新安裝的ssh不用操作下面兩部)
  2.service sshd restart
  3.setup命令進入將防火牆關閉。 

問題2:使用putty登陸之後顯示亂碼

解決方法:(以下方法未經過本人測試,摘錄自網絡)
  其實只需要一步即可: 在window-〉Translation中,character set 中,把Use font encoding改爲UTF-8,其他不需要改動(按照方法一改動之後可能大寫字母顯示會編程亂碼)。
  ###方法一:
  打開putty主程序,選擇window-〉Appearance-〉Font settings-〉Change Settings,選擇Fixedsys字體,字符集選擇CHINESE_GB2312。在window-〉Appearance-〉 Translation中,Received data assumed to be in which character set 中,把Use font encoding改爲UTF-8如果經常使用,把這些設置保存在session裏面。
  保存方法:再做完以上操作的同時選中以下兩項:
  在window-〉Appearance-〉 Translation中,選中:TReat CJK ambiguous characters as wide和Caps Lock acts as Cyrillic switch即可。 
 

  ###方法二:
  編輯/etc/sysconfig/i18n
  把第1句"LANG="zh_CN.UTF-8""改爲"LANG="zh_CN.GB18030"",完成後保存重新登錄即可。

  ##方法三:
  打開putty,登錄成功後,在shell中輸入
  # export LC_ALL= 'zh_CN.utf8'
  # vi ~/.bash_profile
  LANG=zh_CN.GB18030
  LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
  export LANG LANGUAGE 

在命令行輸入用戶名密碼即可登錄系統,進行各種操作。

如果覺得默認的字體不好看,還可以對字體進行各種設置。(Window->Appearance->Font settings->Change...)

在 PuTTY 裏面怎樣選中,複製和粘貼?

在 PuTTY 的窗口裏面複製、粘貼可不能用 Windows 裏的這些 Ctrl+C, Ctrl+Ins, Ctrl+V 這些快捷鍵,Ctrl+C 在控制檯上可是終止當前的命令執行。

PuTTY 的選擇、複製、粘貼這些操作都是通過鼠標來完成的。

在 Window-〉Selection 這裏可以設置複製和粘貼的方式。

默認的 Action of mouse buttons (鼠標按鍵的功能)的選項是 Compromise,這種方式下選中有兩種方式,一是直接用鼠標左鍵拖拉選中就可以了,二是用鼠標中鍵單擊選中區域的開頭,用滾動條拖拉到期望選中區域的末尾,再用鼠標中鍵單擊,就可以選中了。選中以後,單擊鼠標左鍵就把選中部分複製到剪貼板了。粘貼也很簡單,單擊鼠標右鍵。

Action of mouse buttons 的第一個選項是 Windows (Windows 方式的),鼠標中鍵的操作跟前面提到的一樣。右鍵不是粘貼了,而是打開了右鍵菜單。

第三個選項是 xterm (xterm 方式),這個跟默認的 Compromise 方式相反的,中鍵和右鍵的操作調換了一下,就不多說了。

下面那個 Shift overrides application's use of mouse 是和 Shift 鍵有關的。有些 Rogue Like 的程序,比如 mc、links、Lynx、VIM 等等,都支持鼠標操作,想在用鼠標在上面選擇或粘貼就不行了。這個選項默認是選中的,在支持鼠標操作的 Rogue Like 界面下,按住 Shift 鍵,就可以像前面的那樣用鼠標來選擇、複製、粘貼了。

在 Control use of mouse 裏面還有個 Default selection mode (默認的選擇模式),默認是 Normal,就像文字處理工具裏這樣的選擇。

另外一個是 Rectangular block(塊選擇方式),至於用哪種方式就看自己的選擇了。

成功登錄主機後,也能正常看到中文了。這樣,我們就可以完成大部分的工作。最後要關閉窗口了,該怎麼辦呢?很多人都是直接點擊窗口上的關閉按鈕,完全沒有理會彈出警告窗口,直接點擊了 Yes。

這樣做是不對的,首先這不是正確的註銷方式,應該輸入命令 exit 來正常註銷;其次直接關閉窗口後,你的登錄其實還在服務器上,如果一連多次的這樣強制關閉窗口,用命令 w 或者 who 命令查看時,可以看到很多的用戶還在系統上登錄,佔用了系統的資源。最重要的是,你的這次登錄可能只是爲了啓動一下 WebLogic 或者其他什麼應用服務器,直接關閉窗口後,可能會導致你的業務在隨後的幾分鐘內也被終止,這應該不是你所希望看到的吧。

如果上述的理由是每次要輸入 exit 然後回車,比較麻煩。你可以用快捷鍵 Ctrl+d 來註銷登錄,一般情況下,快捷鍵一按窗口都直接關閉了,還省了兩次鼠標點擊。

在前面說道保存會話時,大家或許也注意到,下面有個 Close window on exit 有三個選項:

  • Always (不管怎樣,窗口總是要關閉的)
  • Never (無論是否有程序還在運行,都不要關閉窗口)
  • Only on clear exit (這個是默認選中的,只有在本次登錄中運行的程序都正常終止或者在後臺運行,窗口才關閉)

有的程序在執行時,雖然在命令最後面加上"&"就能放到後臺運行。但是正常註銷登錄後,窗口沒有被自動關閉,還能看到程序的輸出,這時強制關閉窗口還是可以的。爲了避免這種情形,可以使用 nohup 命令。
用法: nohup 命令 命令參數,這樣就可以了。

刪除 PuTTY 的設置

如果只是在其他機器上臨時用了一個 PuTTY,用完以後想刪除 PuTTY 的配置,就在控制檯裏輸入如下的命令:putty.exe -cleanup

pscp的使用

putty可以遠程登錄主機進行操作,而pscp則可以向遠程主機傳輸文件,而且使用也十分簡單。pscp不想puttty直接運行,而是通過命令提示符運行。輸入pscp.exe即可看到pscp的具體用法。

可以看出 PSCP 的使用是很簡單的,把常用的幾個選項說一下:

  • -q 安靜模式,傳輸文件時什麼也不顯示,否則會顯示出文件的傳輸進度,默認是關閉的
  • -P port 指定服務器的 SSH 端口,注意這個是大寫字母 P,默認是 -P 22,如果主機的 SSH 端口就是 22,就不用指定了
  • -l user 指定以哪個用戶的身份登錄主機,如果沒有指定,則 PSCP 會在 PuTTY 保存的同名 Session 中獲得默認的用戶名稱。用戶名稱也可以和主機名稱寫在一起,用 @ 分割開,比如:username@server
  • -pw passwd 指定登錄時所用的口令爲 passwd
  • -i keyfile 就是指定登錄時所用的密鑰文件
  • 最後面指定的主機名也可以是 PuTTY 中保存的 Session 名稱。比如我們在 PuTTY 中保存了一個名爲 foobarserver 的會話,而我們所在的網絡又的確沒有名爲 foobarserver 的主機名稱。而在這個 foobarserver 會話中保存的主機名稱是 demo-server,保存的自動登錄的用戶是 taylor。那麼用命令
    pscp c:\autoexec.bat foobarserver:backup/就把本地的 c:\autoexec.bat 複製到了主機 demo-server 上的用戶 taylor 所在的主目錄下的 backup 子目錄中(這個路徑可能是 /home/taylor/backup

所以 PSCP 大致用法的例子就是:

pscp -P 22 -i c:\path\your-private-key.ppk -C username@server:/remote/path/

下面還是用一些實例來說明會比較簡單一些:

把本地的 C:\path\foo.txt 複製到遠程主機 192.168.6.200 的 /tmp 目錄下

pscp c:\path\foo.txt 192.168.6.200:/tmp把本地的 C:\path\foo.txt 複製到主機 192.168.6.200 的 /tmp 目錄下,但是以主機上的用戶 taylor 的權限執行

pscp c:\path\foo.txt [email protected]:/tmp或者是

pscp -l taylor c:\path\foo.txt 192.168.6.200:/tmp把本地的 C:\path\foo.txt 傳送到主機 192.168.6.200 的 /tmp 目錄下,但是主機的 SSH 端口是 3122

pscp -P 3122 c:\path\foo.txt 192.168.6.200:/tmp把本地的 C:\path\foo.txt 複製到主機 192.168.6.200 的用戶 taylor 的主目錄下

pscp c:\path\foo.txt [email protected]:.把主機 192.168.6.200 上的用戶 taylor 主目錄下的所有 *.tgz 文件拷貝到本地的 c:\backup 目錄中,如果 SSH 版本是 SSH v1,那這個命令就會出錯。

pscp [email protected]:*.tgz c:\backup

psftp的使用

 

用法與 PSCP 大同小異,雖然有個 -load 選項,其實這個沒啥用,後面用主機名的時候,與 PSCP 一樣直接用上會話名稱就可以了。

用 PSFTP 登錄到服務器上以後,操作與 FTP 差不多,這裏簡單的說一下吧:

  • open 登錄主機
    open [username@]<sessname|hostname|ip> [port]
    比如:
  • open taylor@demo-server 3022
    就是以用戶 taylor 的身份,登陸到主機 demo-server 上,SSH 端口是 3022
  • open demo-server
    登陸 demo-server,這裏的 demo-server 可以是PuTTY 中已經保存的會話名稱,也可以是主機的名稱,如果主機名稱與會話名稱相同,以會話名稱爲準。
  • close 關閉 SFTP 會話並退出 SFTP
    這個沒啥說的,close 就關閉了 SFTP 連接
  • bye/quit 結束本次的 SFTP 會話
    也沒啥用法,就是關閉了 PSFTP 這個程序
  • help [command] 幫助
    直接打 help 就可以看到幫助指令,後面指定上 一個命令就可以查看該命令的幫助,比如: help open
  • cd [directory] 改變當前目錄
  • pwd 察看當前目錄
  • lcd [directory] 改變本地目錄
  • lpwd 察看本地當前目錄
  • get [-r] <filename|directory> 從服務器下載一個文件/目錄,這個命令不能用通配符,參數 -r 可以遞歸下載整個目錄
  • put [-r] <filename|directory> [dest] 把文件/目錄上傳到服務器,這個命令不能用通配符,參數 -r 可以遞歸上傳整個目錄
  • mget [-r] <filename|directory> 從服務器下載一批文件/目錄,可以用通配符*,-r 的含義與 get 一樣,用法舉例:mget *.c
  • mput [-r] <filename|directory> [dest] 把一批文件/目錄上傳到服務器,可以用通配符,-r 的含義與 put 一樣,用法舉例:mput *.c
  • reget [-r] <filename|directory> 從服務器續傳下載一個文件/目錄,這個命令不能用通配符,-r 的含義與 get 一樣
  • reput [-r] <filename|directory> [dest] 把一批文件/目錄續傳上傳到服務器,前提是遠端必須存在需要續傳的文件,這個命令不能用通配符,-r 的含義與 put 一樣
  • dir [directory] 列目錄
  • ls 和 dir 一樣
  • chmod [file|directory] 改變文件的權限,與 Unix 的 chmod 命令類似,用法舉例:chmod a+x *.sh
  • del <filename> 刪除文件,要注意的是 del 只能刪除文件
  • rm 與 del 一樣
  • mkdir <new-directory-name> 創建一個目錄
  • rmdir <directory> 刪除一個空目錄,只有空目錄纔可以被刪除
  • mv <source-file|source-directory> <dest-file|dest-directory> 改名/移動。如果源和目的都是文件或目錄,則是改名。如果目的是目錄的話,則是移動。
  • ren <source> <distination> 重命名或移動遠端的文件
  • ! 在本地命令前加一個感嘆號,就可以直接執

其他可選的 SFTP 客戶端

FileZilla : http://filezilla.sf.net

WinSCP : http://www.winscp.net

用 Plink 更方便快捷的執行遠程主機上的命令

看上去 Plink 的使用方法、參數與PSCP、PSFTP都很類似。

  • -P port 指定服務器的 SSH 端口,注意這個是大寫字母 P,默認是 -P 22,如果主機的 SSH 端口就是 22,就不用指定了
  • -l user 指定以哪個用戶的身份登錄主機,如果沒有指定,則 PSCP 會在 PuTTY 保存的同名 Session 中獲得默認的用戶名稱。用戶名稱也可以和主機名稱寫在一起,用 @ 分割開,比如:username@server
  • -pw passwd 指定登錄時所用的口令爲 passwd
  • -i keyfile 就是指定登錄時所用的密鑰文件
  • -m file 如果執行的命令很多的話,可以把命令寫到文件中,然後用這個參數來指定

還是用一些實際的例子來說明一下 Plink 吧

還記得前面說到 PuTTY 的自動執行命令那個配置麼?在說到那個配置的時候,我們演示了一個簡單的 Tomcat 重新啓動的命令,這個命令是要寫在 PuTTY 的 Remote command 裏面去。現在我們用 Plink 來實現同樣的功能:

假設連接的主機是 192.168.6.200,SSH 的端口是 3022,用戶是 taylor:

plink -P 3022 [email protected] export CATALINA_HOME="~/apache-tomcat-5.5.17";export JAVA_HOME="~/jdk1.5.0_07";export PATH=$JAVA_HOME/bin;$PATH ; cd $CATALINA_HOME/bin;./shutdown.sh;./startup.sh;tail -f $CATALINA_HOME/logs/catalina.out如果在 PuTTY 中保存了一個名爲 192.168.6.200 的會話,注意,這個會話的名稱與主機 IP 一樣,在會話中已經正確保存了端口 3022,指定了默認的用戶是 taylor,現在這個命令就可以簡化爲:

plink 192.168.6.200 export CATALINA_HOME="~/apache-tomcat-5.5.17";export JAVA_HOME="~/jdk1.5.0_07";export PATH=$JAVA_HOME/bin;$PATH ; cd $CATALINA_HOME/bin;./shutdown.sh;./startup.sh;tail -f $CATALINA_HOME/logs/catalina.out用 date 命令查看一下主機上的時間,並且格式化輸出:

plink 192.168.6.200 date "+%F %T"大家實際執行一下命令看看,會發現,這個命令並沒有返回我們期望的結果,而是返回了一個錯誤:

C:\>plink 192.168.6.200 date "+%F %T"

date: too many non-option arguments: %T

Try `date --help' for more information.可是在服務器上直接執行命令 date "+%F %T",的確是正確無誤的,哪裏出了問題呢?這是因爲Windows的控制檯會把兩個雙引號之間的字符串作爲一個參數傳遞給被執行的程序,而不會把雙引號也傳遞給程序。我們做這樣一個小小的實驗來說明一下這個問題:

比如在 c:\tmp 文件夾裏建立三個文件夾,名稱分別爲:"foo"、"bar"、"foo bar"。然後在 foo 這個文件夾裏面建立一個名爲“foo.log”的空文件,在“bar”這個文件夾裏建立一個名爲“bar.log”的空文件,在“foo bar”這個文件夾裏建立一個名爲“foo-bar.log”的空文件。

然後在控制檯下進入 c:\tmp 這個文件夾,執行如下命令:

dir foo bar結果是列出“foo bar”這個文件夾裏的內容,還是分別列出“foo”和“bar”文件夾裏的東西呢?正確答案是後者。

要想正確列出“foo bar”文件夾裏的東西,就需要用雙引號把"foo bar"引起來

C:\tmp>dir foo bar
 Volume in drive C is System
 Volume Serial Number is 9C51-A51C

 Directory of C:\tmp\foo

2006-11-22  09:48    <DIR>          .
2006-11-22  09:48    <DIR>          ..
2006-11-16  11:58                 0 foo.log
               1 File(s)              0 bytes

 Directory of C:\tmp\bar

2006-11-22  09:48    <DIR>          .
2006-11-22  09:48    <DIR>          ..
2006-11-16  11:58                 0 bar.log
               1 File(s)              0 bytes
               2 Dir(s)   1,107,345,408 bytes free

C:\tmp>dir "foo bar"
 Volume in drive C is System
 Volume Serial Number is 9C51-A51C

 Directory of C:\tmp\foo bar

2006-11-22  09:48    <DIR>          .
2006-11-22  09:48    <DIR>          ..
2006-11-16  11:58                 0 foo-bar.log
               1 File(s)              0 bytes
               2 Dir(s)   1,107,345,408 bytes free

 

說到這裏,就會明白上面的那個命令 plink 192.168.6.200 date "+%F %T" 其實在主機上執行的真實命令是 date +%F %T,而不是命令行中指定的 date "+%F %T"。不過還好,Windows 的控制檯可不認得單引號,所以上面那個命令的正確用法應該是:

c:\>plink 192.168.6.200 date '+%F %T'

2006-11-22 09:39:57我經常需要登錄到服務器上把 ADSL 重新撥號,可以把下面的命令寫到一個文本文件中,比如保存到了 C:\adsl-restart.command.txt

echo "stoping..."

/sbin/adsl-stop

echo "starting..."

/sbin/adsl-start

echo "done."

/sbin/adsl-status然後執行如下命令:

plink -m c:\adsl-restart.command.txt [email protected]我經常要查看 Tomcat 的運行日誌

plink [email protected] tail -f ~/apache-tomcat-5.5.17/logs/catalina.out每天都要看服務器上的剩餘空間,就用這個命令:

plink [email protected] df -k假設 www.chaifeng.com 連接着另外一個網段 10.204.26.0,有臺內網IP 爲 10.204.26.21 的 Solaris 8主機只能用 telnet 登錄,爲了防止被監聽,我們可以用 Plink 建立一個隧道,隧道開放 120 秒鐘,如果隧道沒有被使用,就自動斷開連接,然後我們在本地就可以用命令 telnet localhost 2623 的安全登錄那臺 Solaris 8 主機了。

plink -L 2623:10.204.26.21:23 www.chaifeng.com sleep 120在主機 www.chaifeng.com 上正在運行着 tor,默認的監聽地址是 127.0.0.1:9050,用 Plink 建立一個隧道,然後瀏覽器上配置代理服務器爲 127.0.0.1,端口是 9050,這樣就能夠安全的使用 tor 代理了,不用擔心從我們的機器到主機 www.chaifeng.com 有被監聽的可能了。

plink -C -N -L 9050:127.0.0.1:9050 [email protected]結合上 PSCP 我們還可以完成文件的每天備份

plink [email protected] tar jcf $(date '+documents.%F.tar.bz2') ~/documents

pscp [email protected]:$(date '+documents.%F.tar.bz2') c:\backup\

plink [email protected] rm -f $(date '+documents.%F.tar.bz2')如果把這些常用的操作寫成批處理文件,到時候要重啓一下 Tomcat,或者馬上察看一下 Tomcat 日誌,再或者只是要把 ADLS 重新撥號以下,只需要用鼠標一雙擊這個批處理文件,稍等一下就自動完成了。不比你打開 PuTTY,登錄到服務器上,然後再一個一個的執行命令,最後還得註銷來的方便快捷麼?再懶一些,把自動備份的批處理放到計劃任務裏面,每天定時完成,哈哈,有時間上網找些好玩的東西了,不用每天忙於這些繁雜重複的命令中了。

https://www.cnblogs.com/CraryPrimitiveMan/p/3647742.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章