標籤:ssh linux 互信
linux配置ssh互信
什麼叫linux主機互信:
Linux主機互信,就是主機之間相互信任,什麼是信任,就像人與人之間一樣,不需要利用金錢等(除了你自己以外其他的東西)來取得對方的信任,大家相互信任對方,不需要額外的憑證。就好比你,你爸,你媽,你姐之間,不需要錢來維持你們之間的信任。同樣,linux主機之間也是,我們從一台主機登陸到另一台時,往往需要驗證你,需要你輸入使用者密碼,才允許你登陸。這樣在多台機器之間來回切換登陸就會頻繁輸入密碼,非常麻煩,看看,一切的根源來自於互不信任。可不可以不用輸入密碼就直接登陸呢?答案是可以,但條件是主機之間相互信任對方。
因此ssh互信就誕生了。我們在主機值之間配置了公開金鑰認證後,也就是取得信任之後,就不必再輸入密碼了(當然實際上是ssh使用rsa演算法幫你完成了驗證過程)。
公開金鑰認證的基本思想:
對資訊的加密和解密採用不同的key,這對key分別稱作private key和publickey,其中,public key存放在欲登入的伺服器上,而privatekey為特定的客戶機所持有。當客戶機向伺服器發出建立安全連線的請求時,首先發送自己的public key,如果這個public key是被伺服器所允許的,伺服器就發送一個經過public key加密的隨機資料給客戶機,這個資料只能通過private key解密,客戶機將解密後的資訊發還給伺服器,伺服器驗證正確後即確認客戶機是可信任的,從而建立起一條安全的資訊通道。通過這種方式,客戶機不需要向外發送自己的身份標誌“private key”即可達到校正的目的,並且private key是不能通過public key反向推斷出來的。這避免了網路竊聽可能造成的密碼泄露。客戶機需要小心的儲存自己的private key,以免被其他人竊取,一旦這樣的事情發生,就需要各伺服器更換受信的publickey列表。
使用過github的使用者就會知道,用git登陸遠程倉庫github的時候,也會有公開金鑰認證(當然是首次使用git時),首次使用git,就會要求你在用戶端產生一個rsa key pairs,一個public-key存放於id_rsa.pub,一個private-key存放於id_rsa,並且上傳你的公開金鑰public-key到github上,這樣做的目的就是你可以取得github的信任,也就是github信任你,下次你登入的時候,github會使用你上傳的公開金鑰來驗證你的身份,從而不用輸入密碼。當然這個過程只是單向的信任,也就是github現在信任你,但是你並沒有建立對github的信任,需要建立麼,其實沒有必要,因為github是不會主動向你發出請求的,大多數情況是你需要主動向github發送請求。
知道了單向信任,那麼相互信任就簡單了,就是主機之間的公開金鑰都要告知對方,這樣才能相互信任,你信任我,我信任你。那麼,以下就是互信建立的步驟了:
配置ssh互信的步驟如下:
1. 首先,在要配置互信的機器上,產生各自的經過認證的key檔案;
2. 其次,將所有的key檔案匯總到一個總的認證檔案中;
3. 將這個包含了所有互信機器認證key的認證檔案,分發到各個機器中去;
4. 驗證互信。
在主機名稱為node1,node2,node3上以相同的使用者test建立ssh互信。
1.在每個節點上建立 RSA密鑰和公開金鑰
使用test使用者登陸
mkdir~/.ssh
chmod700 ~/.ssh
cd~/.ssh
ssh-keygen-t rsa
2.整合公開金鑰檔案
在node1上執行以下命令
sshnode1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
sshnode2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
sshnode3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod600 ~/.ssh/authorized_keys
3.分發整合後的公開金鑰檔案
在node1上執行以下命令
scp~/.ssh/authorized_keys node2:~/.ssh/
scp~/.ssh/authorized_keys node3:~/.ssh/
4.測試ssh互信
在各個節點上運行以下命令,若不需要輸入密碼就顯示系統當前日期,就說明SSH互信已經配置成功了。
sshnode1 date
sshnode2 date
sshnode3 date
一下是我的實驗
[[email protected] .ssh]$ ssh-keygen-t rsa
Generating public/private rsa key pair.
Enter file in which to save the key(/home/ocdc/.ssh/id_rsa):
/home/ocdc/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in/home/ocdc/.ssh/id_rsa.
Your public key has been saved in/home/ocdc/.ssh/id_rsa.pub.
The key fingerprint is:
b3:e7:19:4b:e1:59:0d:b5:4d:ba:04:89:81:9d:37:[email protected]
The key‘s randomart image is:
+---[RSA 2048]----+
| oE=oo. .|
| . + +o = |
| ...+ .|
| + . |
| S . . o |
| + + |
| . * |
| + + |
| + |
+-----------------+
然後在各個需要互信的介面機上重複以上步驟產生認證檔案
回到介面機1,
[[email protected] .ssh]$ ssh10.31.100.21 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[email protected]‘s password:
[[email protected] .ssh]$ ssh10.31.100.22 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[email protected]‘s password:
[[email protected] .ssh]$ ssh10.31.100.23 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[email protected]‘s password:
[[email protected] .ssh]$ ssh10.31.100.24 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[email protected]‘s password:
[[email protected] .ssh]$ catauthorized_keys
可以看到所有主機的公開金鑰都存在了authorized_keys中。接下來就是分發這個整合後的認證了。
[[email protected] .ssh]$ scp~/.ssh/authorized_keys 10.31.100.21:~/.ssh/
[email protected]‘s password:
authorized_keys 100% 3219 3.1KB/s 00:00
[[email protected] .ssh]$ scp~/.ssh/authorized_keys 10.31.100.22:~/.ssh/
[email protected]‘s password:
authorized_keys 100% 3219 3.1KB/s 00:00
[[email protected] .ssh]$ scp~/.ssh/authorized_keys 10.31.100.23:~/.ssh/
[email protected]‘s password:
authorized_keys 100% 3219 3.1KB/s 00:00
[[email protected] .ssh]$ scp~/.ssh/authorized_keys 10.31.100.24:~/.ssh/
[email protected]‘s password:
authorized_keys 100% 3219 3.1KB/s 00:00
任務完成,驗證是否成功
[[email protected] .ssh]$ ssh10.31.100.21 date
Wed May 27 20:39:39 CST 2015
[[email protected] .ssh]$ ssh10.31.100.22 date
Wed May 27 20:39:45 CST 2015
[[email protected] .ssh]$ ssh10.31.100.23 date
Wed May 27 20:39:51 CST 2015
[[email protected] .ssh]$ ssh10.31.100.24 date
Wed May 27 20:39:55 CST 2015
linux主機互信