mac 使用iTerm2快捷登陸遠程服務器

mac 使用iTerm2快捷登陸遠程服務器

正常使用ssh登陸服務器:

ssh -p port user@host

user@host's password:

輸入端口,用戶名,服務器ip地址後,還需輸入密碼,而且每次從新登陸都要輸入。使用 scp 上傳下載文件也是這樣。
原理: 參考:https://www.tuicool.com/articles/qyiyim
SSH之因此可以保證安全,緣由在於它採用了公鑰加密。html

整個ssh密碼登陸過程是這樣的:linux

1)用戶向遠程主機發登陸請求:ssh user@host算法

2)遠程主機收到用戶的登陸請求,把本身的公鑰發給用戶。vim

2)用戶使用這個公鑰,將登陸密碼加密後,發送回遠程主機。安全

3)遠程主機用本身的私鑰,解密登陸密碼,若是密碼正確,就贊成用戶登陸。服務器

在linux上,若是你是第一次登陸對方主機,系統會出現下面的提示:ssh

$ ssh user@host 
The authenticity of host 'host (12.18.429.21)' can't be established. 
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d. 
Are you sure you want to continue connecting (yes/no)?

這段話的意思是,沒法確認host主機的真實性,只知道它的公鑰指紋,問你還想繼續鏈接嗎?
所謂"公鑰指紋",是指公鑰長度較長(這裏採用RSA算法,長達1024位),很難比對,因此對其進行MD5計算,將它變成一個128位的指紋。上例中是98:2e:d7:e0🇩🇪9f:ac:67:28:c2:42:2d:37:16:58:4d,再進行比較,就容易多了。
很天然的一個問題就是,用戶怎麼知道遠程主機的公鑰指紋應該是多少?回答是沒有好辦法,遠程主機必須在本身的網站上貼出公鑰指紋,以便用戶自行覈對。
假定通過風險衡量之後,用戶決定接受這個遠程主機的公鑰。ide

Are you sure you want to continue connecting (yes/no)? yes

系統會出現一句提示,表示host主機已經獲得承認。網站

Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.

而後,會要求輸入密碼。ui

Password: (enter password)

若是密碼正確,就能夠登陸了。
當遠程主機的公鑰被接受之後,它就會被保存在文件$HOME/.ssh/known_hosts之中。下次再鏈接這臺主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。
每一個SSH用戶都有本身的known_hosts文件,分別在本身的$HOME目錄下,此外操做系統也有一個這樣的文件,一般是/etc/ssh/ssh_known_hosts,保存一些對全部用戶均可信賴的遠程主機的公鑰。

使用ssh公鑰登陸(免輸入密碼)

SSH還提供了公鑰登陸,能夠省去輸入密碼的步驟。

使用公鑰登陸,首先你要有公鑰。看下這個目錄(~/.ssh/)下是否存在id_rsa.pub和id_rsa這兩個文件。
沒有的話,運行此命令:

$ ssh-keygen

會在 ~/.ssh 目錄下生成兩個文件 d_rsa.pub和id_rsa ,前者是公鑰,後者是你的私鑰。
公鑰生成後,運行:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p port user@host

好了,今後你再登陸此遠程主機,就不須要輸入密碼了。
若是仍是不行,就打開遠程主機的/etc/ssh/sshd_config這個文件,檢查下面幾行前面"#"註釋是否取掉。

RSAAuthentication yes   
PubkeyAuthentication yes   
AuthorizedKeysFile .ssh/authorized\_keys

而後,重啓遠程主機的ssh服務。
原理:
公鑰登陸是爲了解決每次登陸服務器都要輸入密碼的問題,流行使用RSA加密方案,主要流程包含:

    一、客戶端生成RSA公鑰和私鑰

    二、客戶端將本身的公鑰存放到服務器

    三、客戶端請求鏈接服務器,服務器將一個隨機字符串發送給客戶端

    四、客戶端根據本身的私鑰加密這個隨機字符串以後再發送給服務器

    五、服務器接受到加密後的字符串以後用公鑰解密,若是正確就讓客戶端登陸,不然拒絕。這樣就不用使用密碼了。
    

對公鑰和私鑰的說明可參考:https://www.cnblogs.com/scofi/p/6617394.html

使用iTerm2 Profiles快捷登陸ssh(推薦)

找一個目錄建立一個普通文件,例:vim 12.20_prod_aide
編輯一下內容,把本身的信息填寫上去。

#!/usr/bin/expect

set PORT 22
set HOST ***.**.12.20
set USER root
set PASSWORD ************

spawn ssh -p $PORT $USER@$HOST
expect {
        "yes/no" {send "yes\r";exp_continue;}
         "*password:*" { send "$PASSWORD\r" }
        }
interact

打開iterm2 -> preferences -> Profiles
點擊下面「+」號,新建一個profile。
選擇Command 在輸入框中輸入
expect+剛纔建的文件路徑

此時就設置好了
點擊菜單欄的profiles就能夠看見剛纔新建的12.20的profiles,選擇就直接登上了遠程服務器。

快捷放肆 command+o ,選擇你設定的profile

相關文章
相關標籤/搜索