SSH不輸入密碼等10條使用技巧
SSH 是目前較可靠,專為遠程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題。S S H最初是U N I X系統(tǒng)上的一個程序,后來又迅速擴展到其他操作平臺。S S H在正確使用時可彌補網(wǎng)絡(luò)中的漏洞。客戶端包含ssh程序以及像scp(遠程拷貝)、slogin(遠程登陸)、sftp(安全文件傳輸)等其他的應(yīng)用程序。SSH有很多非常酷的特性,如何它是你每天的工作伴侶,那么我想你有必要了解以下16條高效使用SSH的秘籍,它們幫你節(jié)省的時間肯定會遠遠大于你用來配置它們的時間。
1. 在服務(wù)器間跳轉(zhuǎn)
有些時候,你可能沒法直接連接到某臺服務(wù)器,而需要使用一臺中間服務(wù)器進行中轉(zhuǎn),這個過程也可以自動化。首先確保你已經(jīng)為服務(wù)器配置了公鑰訪問,并開啟了agent forwarding,現(xiàn)在你就可以通過2條命令來連接目標服務(wù)器,不會有任何提示輸入:
$ ssh gateway
gateway $ ssh db
然后在你的本地SSH配置中,添加下面這條配置:
Host db
HostName db.internal.example.com
ProxyCommand ssh gateway netcat -q 600 %h %p
現(xiàn)在你就可以通過一條命令來直接連接目標服務(wù)器了:
$ ssh db
這里你可能會需要等待長一點的時間,因為SSH需要進行兩次認證,,注意netcat也有可能被寫成nc或者ncat或者前面還需要加上g,你需要檢查你的中間服務(wù)器來確定實際的參數(shù)。
2. 省去用戶名
如果你在遠程服務(wù)器上的用戶名和你本地的用戶名不同,你同樣可以在SSH配置中進行設(shè)置:
Host www* mail
HostName %h.example.com
User simon
現(xiàn)在就算我的本地用戶名是 smylers,我仍然可以這樣連接我的服務(wù)器:
$ ssh www2
SSH會使用simon賬戶連接你的服務(wù)器,同樣,Putty可以保存這個信息在你的session中。
3. 主機別名
你也可以在你的SSH配置中直接定義主機別名,就像下面這樣:
Host dev
HostName dev.internal.example.com
你還可以使用通配符來進行分組:
Host dev intranet backup
HostName %h.internal.example.com
Host www* mail
HostName %h.example.com
在Putty中你可以為每個主機名保存單獨的session,然后雙擊建立連接(但是它可能沒辦法支持通配符)。
4. 省略主機名
輸入服務(wù)器的完整主機名來建立一個新的SSH連接實在是太乏味無聊了,尤其是當你有一組擁有相同域名但是子域名不同的服務(wù)器需要管理時,比如下面這樣:
* www1.example.com
* www2.example.com
* mail.example.com
* intranet.internal.example.com
* backup.internal.example.com
* dev.internal.example.com
或許你的網(wǎng)絡(luò)已經(jīng)配置了可以直接使用短域名,比如intranet,但是如果你的網(wǎng)絡(luò)不支持,實際上你可以自己搞定這個問題,而不用求助網(wǎng)絡(luò)管理員。
解決辦法根據(jù)你用的操作系統(tǒng)而略有差異,下面是我的Ubuntu系統(tǒng)的配置:
prepend domain-search “internal.example.com”, “example.com”;
然后你需要重啟網(wǎng)絡(luò):$ sudo restart network-manager
不同的系統(tǒng),這兩條命令可能會略有差異。#p#
5. 連接中轉(zhuǎn)
有時候你可能需要從一個服務(wù)器連接另外一個服務(wù)器,比如在兩個服務(wù)器之間直接傳輸數(shù)據(jù),而不用通過本地電腦中轉(zhuǎn):
www1 $ scp -pr templates www2:$PWD
(順便說一下,當你需要在兩臺服務(wù)器間拷貝文件時,$PWD變量時非常有用的),因為即使你已經(jīng)在兩臺服務(wù)器上添加了你本地電腦的公鑰,scp默認仍然會提示你輸入密碼:這是因為你用來作為跳板的那臺服務(wù)器上并沒有你的私鑰,所以,第二胎服務(wù)器會拒絕你的公鑰,但是一定不要通過將你的私鑰拷貝到中轉(zhuǎn)服務(wù)器上來解決這個問題,你可以使用agent forwarding來解決這個問題,只要在你的.ssh/config文件中加入下面這行代碼就可以了:
ForwardAgent yes
或者是在Putty中勾上“Allow agent forwarding”選項,現(xiàn)在你的本地SSH就變成了第一臺服務(wù)器的SSH代理,從第一臺服務(wù)器在連接其它服務(wù)器就變和和在你本地一樣簡單,注意,如果要開啟這個選項,前提是這個中間服務(wù)器值得你信任。
6.別再輸入密碼
如果你還在通過密碼方式登錄SSH,那么你或許應(yīng)該試試SSH Keys,首先使用OpenSSH為自己聲稱一對密鑰:
$ ssh-keygen
跟隨指示,完成之后,你應(yīng)該可以在你的.ssh目錄下看到兩個文件,id_rsa就是你的私鑰,而id_ras.pub則是你的公鑰,現(xiàn)在你需要將你的公鑰拷貝到服務(wù)器上,如果你的系統(tǒng)有ssh-copy-id命令,拷貝會很簡單:
$ ssh-copy-id smylers@compo.example.org
否則,你需要手動將你的私鑰拷貝的服務(wù)器上的~/.ssh/authorized_keys文件中:
$ < ~/.ssh/id_rsa.pub ssh clegg.example.org ‘mkdir -p .ssh; cat >> .ssh/authorized_keys; chmod go-w .ssh .ssh/authorized_keys’
現(xiàn)在試試重新連接到SSH服務(wù)器,或是拷貝文件,是不是已經(jīng)不需要再輸入密碼了?
為Putty配置SSH Key
Putty也可以使用SSH Key,從Putty網(wǎng)站下載PuttyGen和Pageant,然后使用PuttyGen生成你的密鑰,將公鑰拷貝到服務(wù)器的’.ssh/authorized_keys’目錄,然后運行Pageant,導(dǎo)入你的私鑰,讓它在后臺運行,險隘你就可以使用Putty通過公鑰直接登錄服務(wù)器了,你可以在Putty手冊的第8,9章了解關(guān)于這一特性的詳細介紹。
7. 長連接
如果你發(fā)現(xiàn)自己每條需要連接同一個服務(wù)器無數(shù)次,那么長連接選項就是為你準備的:
ControlPersist 4h
現(xiàn)在你每次通過SSH與服務(wù)器建立連接之后,這條連接將被保持4個小時,即使在你退出服務(wù)器之后,這條連接依然可以重用,因此,在你下一次(4小時之內(nèi))登錄服務(wù)器時,你會發(fā)現(xiàn)連接以閃電般的速度建立完成,這個選項對于通過scp拷貝多個文件提速尤其明顯,因為你不在需要為每個文件做單獨的認證了。
8. 多條連接共享
如果你需要在多個窗口中打開到同一個服務(wù)器的連接,而不想每次都輸入用戶名,密碼,或是等待連接建立,那么你可以配置SSH的連接共享選項,在本地打開你的SSH配置文件,通常它們位于~/.ssh/config,然后添加下面2行:
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
現(xiàn)在試試斷開你與服務(wù)器的連接,并建立一條新連接,然后打開一個新窗口,再創(chuàng)建一條連接,你會發(fā)現(xiàn),第二條連接幾乎是在瞬間就建立好了。
Windows用戶
如果你是Windows用戶,很不幸,最流行的開源SSH客戶端Putty并不支持這個特性,但是Windows上也有OpenSSH的實現(xiàn),比如這個Copssh,如果你覺得下面的一些技巧對你很有幫助,或許你應(yīng)該試試Copssh。
文件傳輸
連接共享不止可以幫助你共享多個SSH連接,如果你需要通過SFTP與服務(wù)器傳輸文件,你會發(fā)現(xiàn),它們使用的依然是同一條連接,如果你使用的Bash,你會發(fā)現(xiàn),你甚至SSH甚至支持Tab對服務(wù)器端文件進行自動補全,共享連接選項對于那些需要借助SSH的工具,比如rsync,git等等也同樣有效。
9. 加速連接
如果你確保你和某個服務(wù)器之間的連接是安全的(比如通過公司內(nèi)網(wǎng)連接),那么你就可以通過選擇arcfourencryption算法來讓數(shù)據(jù)傳輸更快一些:
Host dev
Ciphers arcfour
注意這個加速是以犧牲數(shù)據(jù)的“加密”性為代價的,所以如果你連接的是位于網(wǎng)上的服務(wù)器,千萬不要打開這個選項,并且確保你是通過VPN建立的連接。
10. 減少延遲
如果每次連接服務(wù)器都意味著你需要等待幾十秒而無所事事,那么你或許應(yīng)該試試在你的SSH配置中加入下面這條:
GSSAPIAuthentication no
如果這條命令有效的話,你應(yīng)該通知你的系統(tǒng)管理員讓他在服務(wù)器上禁用這個選項,這樣其他人就不用再分別添加這條配置到它們的本地配置了。
【編輯推薦】