SSH安全登陸原理:密碼登陸與公鑰登陸
阿新 • • 發佈:2018-11-10
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,完成登陸。
公鑰登陸
ssh-keygen -t rsa -C "-t :表示加密型別 -C :表示金鑰標示字串 第二步:將公鑰id_rsa.pub新增到GITLab中的SSHKEY上 執行命令:150321****@163.com"
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)