SSH全稱(Secure SHell)是一種以安全性聞名的應用層網路通訊協議,用於計算機間的安全通訊,是目前比較成熟的遠端登陸解決方案。
它提供兩種方法登陸:
1.密碼登陸
2.公鑰登陸
密碼登陸
1.客戶端填寫使用者名稱密碼發起遠端登陸
2.遠端伺服器收到登陸請求後,會將本地的一個公鑰傳送給客戶端
3.客戶端收到公鑰後,將自己的登陸資訊用遠端伺服器的公鑰加密,並將加密後的結果傳送給遠端伺服器。
4.遠端伺服器收到登陸密文後,用本地私鑰解密,拿到登陸資訊到資料庫比較。登陸資訊無誤時,顯示登陸成功。有誤時就報錯。
5.登陸成功後,客戶端將會將遠端伺服器的公鑰儲存到本地,等下次再登陸時,客戶端檢測到收到的公鑰已經在本地存在(通常儲存的目錄:$HOME/.ssh/known_hosts),就不會報警告了
提示:
在密碼登陸進行到第2步時,客戶端收到了伺服器的公鑰,但是不確定這個公鑰到底是不是要訪問的目標伺服器(也可能時中間攻擊者,傳送過來的假公鑰)。此時會有提示
# ssh user@host
The authenticity of host 'host (18.18.229.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)?
如果確定這個公鑰就是目標伺服器發過來的公鑰,就點選yes,完成登陸。
公鑰登陸
公鑰登陸相對密碼登陸可以避免中間攻擊,同時也簡單很多
1.客戶端在本地生成一對公私鑰
2.將客戶端本地生成的公鑰手動新增到遠端伺服器上
3.客戶端發起登陸請求到遠端伺服器
4.遠端伺服器收到請求後,會本地生成一串隨機字元,並將該隨機字串傳送給客戶端
5.客戶端收到遠端伺服器的隨機字串後,用本地私鑰加密,並將密文傳給遠端伺服器
6.遠端伺服器將收到的密文用儲存的客戶端公鑰解密,並將解密結果與原隨機字串對比,若一致的話證明客戶端可信,允許登陸。
提示:
客戶端生成公私鑰的步驟如下:
第一步:在本地機器上使用ssh-keygen產生公鑰私鑰對
執行命令:
ssh-keygen -t rsa -C "150321****@163.com"
-t :表示加密型別
-C :表示金鑰標示字串
第二步:將公鑰id_rsa.pub新增到GITLab中的SSHKEY上
執行命令:
192:~ zhoufei$ cd ~/.ssh 192:.ssh zhoufei$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBQYZidTBczPtJ22xNJwl7Pq+yaZnualVS8juad3Oq+w6v5kgin9sW+xs7w9qrGmWHTkkOIPvckmqY7qobazI32YzI9IKFE2yGm51H1pXM4t9iEB0OCHdy1s1D2gB/bNI2ZJPhDjLOfbGO1Mj9B85n8WR0dy8eYSRBhUneiKor8ENnCvP1Sw4XOsEg6aDCMNRCzDY94Ar4ps41hcg34dNS2eMPsXMrTrz8fCv+IbBltUMDVdcoEFwb8VyYZ8ZspbY6zzRc1nZ5flhfGoB6Zjmmz2tSGCnNS16GdTpoGJd+UaiqrWNuocYWorPocbeMiIi+duZfvYVRNDCmaN0zUlwl****977961@qq.com
若新增後,無法正常拉取和提交,就本地查詢是否有客戶端身份資訊
abcdeMacBook-Pro:.ssh zhoufei$ ssh-add -L
The agent has no identities.
解決方法:
abcdeMacBook-Pro:.ssh zhoufei$ ssh-add Enter passphrase for /Users/zhoufei/.ssh/id_rsa: Identity added: /Users/zhoufei/.ssh/id_rsa (/Users/zhoufei/.ssh/id_rsa)