本文介紹一種自動登陸SSH服務器的方法,那就是使用ControlPersist特性。
背景介紹
很多公司都使用靜態密碼+動態密碼的方式登陸跳板機,某些還會強制一個動態密碼只能登陸一次,於是我們面臨着等一分鍾才能登陸一次跳板機,很不方便。本文介紹一種在本機的設置,免除每次輸入密碼的方法。
實現方法
此功能是使用SSH的ControlPersist特性,SSH版本必須是5.6或以上版本才可使用ControlPersist特性。
多條連接共享
如果你需要在多個窗口中打開到同一個服務器的連接,而不想每次都輸入用戶名,密碼,或是等待連接建立,那么你可以配置SSH的連接共享選項,在本地打開你的SSH配置文件,通常它們位於~/.ssh/config,然后添加下面2行(ControlMaster配合ControlPath一起使用):
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
現在試試斷開你與服務器的連接,並建立一條新連接,然后打開一個新窗口,再創建一條連接,你會發現,第二條連接幾乎是在瞬間就建立好了。
Windows用戶
如果你是Windows用戶,很不幸,最流行的開源SSH客戶端Putty不一定支持這個特性,但是Windows上也有OpenSSH的實現,比如Copssh。
文件傳輸
連接共享不止可以幫助你共享多個SSH連接,如果你需要通過SFTP與服務器傳輸文件,你會發現,它們使用的依然是同一條連接,如果你使用的Bash,你會發現,你甚至SSH甚至支持Tab對服務器端文件進行自動補全,共享連接選項對於那些需要借助SSH的工具,比如rsync,git等等也同樣有效。
長連接
如果你發現自己每條需要連接同一個服務器無數次,那么長連接選項就是為你准備的。
ControlPersist yes
打開之后即使關閉了所有的已連接ssh連接,一段時間內也能無需密碼重新連接。
ControlPersist 4h
每次通過SSH與服務器建立連接之后,這條連接將被保持4個小時,即使在你退出服務器之后這條連接依然可以重用,因此,在你下一次(4小時之內)登錄服務器時,你會發現連接以閃電般的速度建立完成,這個選項對於通過scp拷貝多個文件提速尤其明顯,因為你不在需要為每個文件做單獨的認證了。
Compression為壓縮選項,打開之后加快數據傳輸速度。
具體配置方法
此時我們打開ssh客戶端/shell命令行,編輯~/.ssh/config文件。
運行:vim ~/.ssh/config
Host *
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/%r@%h-%p
Compression yes
如果登陸服務器地址為web.imike.me,通常每次都要輸入ssh web.imike.me這樣一長串。優化上面的配置可減少輸入,提高效率。如下:
Host web
HostName web.imike.me
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/%r@%h-%p
Compression yes
這樣每次只需輸入ssh web即可登陸。大家自行修改HostName和ControlPath字段就可以。
用指定用戶名和指定端口登陸,可以使用下面的代替,同理使用ssh web02命令登陸。
Host web02
HostName 202.202.202.202
User mike
Port 2698
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/%r@%h-%p
Compression yes