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


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

正常使用ssh登錄服務器:

ssh -p port user@host

user@host's password:

輸入端口,用戶名,服務器ip地址后,還需輸入密碼,並且每次重新登錄都要輸入。使用 scp 上傳下載文件也是這樣。
原理: 參考:https://www.tuicool.com/articles/qyiyim
SSH之所以能夠保證安全,原因在於它采用了公鑰加密。

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

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

2)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。

2)用戶使用這個公鑰,將登錄密碼加密后,發送回遠程主機。

3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。

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

$ 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,再進行比較,就容易多了。
很自然的一個問題就是,用戶怎么知道遠程主機的公鑰指紋應該是多少?回答是沒有好辦法,遠程主機必須在自己的網站上貼出公鑰指紋,以便用戶自行核對。
假定經過風險衡量以后,用戶決定接受這個遠程主機的公鑰。

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.

然后,會要求輸入密碼。

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加密方案,主要流程包含:

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

    2、客戶端將自己的公鑰存放到服務器

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

    4、客戶端根據自己的私鑰加密這個隨機字符串之后再發送給服務器

    5、服務器接受到加密后的字符串之后用公鑰解密,如果正確就讓客戶端登錄,否則拒絕。這樣就不用使用密碼了。
    

對公鑰和私鑰的說明可參考: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


免責聲明!

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



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