=====================同級參考資料:
《linux--私密金鑰登陸》http://mengsir.blog.51cto.com/2992083/908342
寫shell免不了要遠程執行shell命令,自然就要實現免登陸。免登陸的原理:
============================
- 首先說明一下處理機制:
- 1.非對稱金鑰就是一對密鑰-公開金鑰和私密金鑰。
- 2.私密金鑰由系統中沒個人自己持有,一般儲存在自己的電腦裡或u盤裡。
- 3.公開金鑰則在網路上傳遞,就是可以傳遞給通訊中的對方,也就意味這可以被駭客截獲。
- 4.用某個人的私密金鑰加密的資料只有用那個人的公開金鑰解密,同樣用公開金鑰加密的資料也只有用私密金鑰解密。
-
- 這樣我們在資訊處理中的應用一般的流程可以是這樣:
- 假設我們有兩個訊息方a和b
- 1.a要b發訊息,首先得到或者由b傳遞給a一個b的公開金鑰。
- 2.然後a用b的公開金鑰加密訊息然後傳遞給b。
- 3.b用自己的私密金鑰解密訊息得到明文。
首先說明一下處理機制: 1.非對稱金鑰就是一對密鑰-公開金鑰和私密金鑰。 2.私密金鑰由系統中沒個人自己持有,一般儲存在自己的電腦裡或u盤裡。 3.公開金鑰則在網路上傳遞,就是可以傳遞給通訊中的對方,也就意味這可以被駭客截獲。 4.用某個人的私密金鑰加密的資料只有用那個人的公開金鑰解密,同樣用公開金鑰加密的資料也只有用私密金鑰解密。 這樣我們在資訊處理中的應用一般的流程可以是這樣: 假設我們有兩個訊息方a和b 1.a要b發訊息,首先得到或者由b傳遞給a一個b的公開金鑰。 2.然後a用b的公開金鑰加密訊息然後傳遞給b。 3.b用自己的私密金鑰解密訊息得到明文。
以上來自:http://blog.163.com/hbu_lijian/blog/static/126129153200910333623799/
公開金鑰和私密金鑰(我是文盲,鑰字之前都是讀yao,這是多音字這裡應該念yue),是成對出現的,一旦任何一個做了更改都會驗證失敗。
1.免登陸的實現:
使用下例中ssky-keygen和ssh-copy-id,僅需通過3個步驟的簡單設定而無需輸入密碼就能登入遠程Linux主機。 ssh-keygen 建立公開金鑰和密鑰。 ssh-copy-id 把本地主機的公開金鑰複製到遠程主機的authorized_keys檔案上。 ssh-copy-id 也會給遠程主機的使用者主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設定合適的許可權 。
步驟1: 用 ssh-key-gen 在本地主機上建立公開金鑰和密鑰
ligh@local-host$ ssh-keygen-t rsa Enter file
in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key] Enter passphrase (empty
for no passphrase): [Press enter key] Enter same passphrase again: [Pess enter key] Your identification has been saved
in/home/jsmith/.ssh/id_rsa. Your public key has been saved
in/home/jsmith/.ssh/id_rsa.pub. The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 ligh@local-host
步驟2: 用 ssh-copy-id 把公開金鑰複製到遠程主機上
ligh@local-host$ ssh-copy-id-i ~/.ssh/id_rsa.pub root@192.168.0.3 ligh@remote-host‘s password: Now try logging into the machine, with ―ssh ?remote-host‘‖,and check
in: .ssh/authorized_keys to make sure we haven‘t added extra keys that you weren‘t expecting.
[注: ssh-copy-id 把密鑰追加到遠程主機的 .ssh/authorized_key 上.]
步驟3: 直接登入遠程主機
ligh@local-host$ ssh remote-host Last login: Sun Nov 16 17:22:332008 from 192.168.1.2
[注: SSH 不會詢問密碼.] ligh@remote-host$ [注: 你現在已經登入到了遠程主機上]
2.登陸失效、公開金鑰失效的情況
之前沒有用ssh-copy-id複製公開金鑰到遠程機器上,而是用scp拷貝之後再手動加入到authorized_keys。
但是某一天這種做法忽然失效了。。。暫時也沒找到原因。但是後來後來重建密鑰,然後使用ssh-copy-id解決了問題。
注意重建密鑰之後之前設定的免登陸slave端都要重新拷貝公開金鑰。