本文是在課程課件基礎上修改的學習筆記
課程原地址:https://www.bilibili.com/video/BV1nW411L7xm
如有侵刪
運維基本功(一):Linux系統安裝
運維基本功(二):Linux基本命令
運維基本功(三):Linux檔案管理
運維基本功(四):Linux檔案管理-Vim編輯器概述
運維基本功(五):Linux檔案管理-用戶管理
運維基本功(六):Linux用戶管理-遠程管理
運維基本功(七):Linux的權限管理操作
運維基本功(八):Linux自有服務與軟體包管理
運維基本功(九): Linux自有服務-防火墻&計劃任務
運維基本功(十): Linux計劃任務以及行程檢測與控制
運維基本功(十一): LAMP專案部署實戰
運維基本功(十二): Linux命令回顧與擴展
運維基本功(十三): 再談用戶組管理
運維基本功(十四):Linux下yum源配置實戰
運維基本功(十五):Linux系統優化基礎
運維基本功(十六):遠程管理SSH服務
運維基本功(十七):遠程管理SSH服務免密登錄解決方案
任務背景
經過一段時間后,開發人員和運維人員都覺得使用密碼SSH登錄的方式太麻煩(每次登錄都需要輸入密碼,難記又容易泄露密碼),為了安全和便利性方面考慮,要求運維人員給所有服務器實作免密碼登錄,
任務要求
所有開發人員通過遠程管理用戶code登錄生產服務器實作免密碼登錄,
理論儲備
SSH兩種認證方式
1、基于用戶名密碼的認證
JumpServer => ssh code@RealServer的IP地址

2、基于密鑰對的認證
基于密鑰對認證,也就是所謂的免密碼登錄,理解免密登錄原理:

任務解決方案
1. 跳板機上的開發人員自己生成一對秘鑰
code1為例:
[code1@MissHou ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/code1/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/code1/.ssh/id_rsa.
Your public key has been saved in /home/code1/.ssh/id_rsa.pub.
The key fingerprint is:
14:78:f6:70:9f:48:64:7e:19:c3:cb:c3:7a:52:1e:d8 code1@MissHou.itcast.cc
The key's randomart image is:
+--[ RSA 2048]----+
| ...o.o |
| . ++o .+ |
| o.=.Boo |
| . +.E |
| S + o |
| o o |
| o |
| |
| |
+-----------------+
[code1@MissHou ~]$ ll -a .ssh/
total 16
drwx------ 2 code1 coding 4096 Dec 28 09:33 .
drwx------ 5 code1 coding 4096 Dec 27 11:49 ..
-rw------- 1 code1 coding 1675 Dec 28 09:33 id_rsa
-rw-r--r-- 1 code1 coding 405 Dec 28 09:33 id_rsa.pub
2. 將code1用戶的公鑰遠程拷貝到生產服務器上指定用戶的指定目錄
[code1@MissHou ~]$ ssh-copy-id code@10.1.1.1
The authenticity of host '10.1.1.1 (10.1.1.1)' can't be established.
RSA key fingerprint is 30:c8:1a:67:55:22:33:26:e5:fb:44:56:4d:8b:26:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.1.1.1' (RSA) to the list of known hosts.
code@10.1.1.1's password:
Now try logging into the machine, with "ssh 'code@10.1.1.1'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
或者
[code1@MissHou ~]$ scp -P22 ~/.ssh/id_rsa.pub code@10.1.1.1:/home/code/.ssh/authorized_keys
code@10.1.1.1's password:
id_rsa.pub
3. 測驗驗證
[code1@MissHou ~]$ ssh -lcode 10.1.1.1
Last login: Fri Dec 28 09:38:17 2018 from 10.1.1.250
[code@server ~]$
擴展總結
圖解SSH加密演算法
- des 對稱的公鑰加密演算法,安全低,資料傳輸速度快;使用同一個秘鑰進行加密或解密
- rsa 非對稱的公鑰加密演算法,安全,資料傳輸速度慢 ,SSH默認的加密演算法

思考1: 用戶資訊加密了,但如何安全的保存密鑰呢?

1、遠程Server收到Client端用戶的登錄請求后,Server端把自己的公鑰發給用戶
2、Client端使用這個公鑰,將密碼進行加密
3、Client將加密的密碼發送給Server端
4、遠程Server用自己的私鑰,解密登錄密碼,然后驗證其合法性
5、根據驗證結果,給Client相應的回應,
思考2: 非對稱加密就絕對安全嗎?

問題: SSH中是如何解決這個問題的呢?
答:基于用戶名密碼認證和密鑰對認證,
- 基于用戶密碼的認證
[root@MissHou ~]# ssh 192.168.10.171
The authenticity of host '192.168.10.171 (192.168.10.171)' can't be established.
RSA key fingerprint is 9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.
Are you sure you want to continue connecting (yes/no)?
**提示資訊:**無法確認主機192.168.10.171的真實性,指紋是9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.,你確定想要繼續嗎?
說明:
- 理論上應該是對公鑰的確認,由于公鑰通過RSA演算法加密,太長,不好直接比較,所以給公鑰生成一個hash的指紋,方便比較,
- 當客戶端輸入yes確認對方的公鑰指紋后,server端的公鑰就會被存放到客戶機的用戶家目錄里~/.ssh/known_hosts檔案中,下次再訪問就直接通過密碼登錄,不需要再確認公鑰,
- 基于秘鑰對的認證(免密碼登錄)
相關檔案解讀:
- id_rsa:保存私鑰
- id_rsa.pub:保存公鑰
- authorized_keys:保存已授權的客戶端公鑰
- known_hosts:保存已認證的遠程主機公鑰
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280639.html
標籤:其他
上一篇:Windows基本的安全加固策略
