1. 程式人生 > >SSH安全登陸原理:密碼登陸與公鑰登陸

SSH安全登陸原理:密碼登陸與公鑰登陸

  SSH全稱(Secure SHell)是一種以安全性聞名的應用層網路通訊協議,用於計算機間的安全通訊,是目前比較成熟的遠端登陸解決方案。 它提供兩種方法登陸: 1.密碼登陸 2.公鑰登陸   密碼登陸   1.客戶端填寫使用者名稱密碼發起遠端登陸 2.遠端伺服器收到登陸請求後,會將本地的一個公鑰傳送給客戶端 3.客戶端收到公鑰後,將自己的登陸資訊用遠端伺服器的公鑰加密,並將加密後的結果傳送給遠端伺服器。 4.遠端伺服器收到登陸密文後,用本地私鑰解密,拿到登陸資訊到資料庫比較。登陸資訊無誤時,顯示登陸成功。有誤時就報錯。 5.登陸成功後,客戶端將會將遠端伺服器的公鑰儲存到本地,等下次再登陸時,客戶端檢測到收到的公鑰已經在本地存在(通常儲存的目錄:$HOME/.ssh/known_hosts),就不會報警告了   提示: 在密碼登陸進行到第2步時,客戶端收到了伺服器的公鑰,但是不確定這個公鑰到底是不是要訪問的目標伺服器(也可能時中間攻擊者,傳送過來的假公鑰)。此時會有提示
 # ssh 
[email protected]
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****
[email protected]

若新增後,無法正常拉取和提交,就本地查詢是否有客戶端身份資訊

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)