linux中生成密鑰的兩種方法
ssh服務支援一種安全認證機制,即密鑰認證。所謂的密鑰認證,實際上是使用一對加密字元串,一個稱為公鑰(publickey), 任何人都可以看到其内容,用于加密;另一個稱為密鑰(privatekey),隻有擁有者才能看到,用于解密。通過公鑰加密過的密文使用密鑰可以輕松解密,但根據公鑰來猜測密鑰卻十分困難。 ssh的密鑰認證就是使用了這一特性。伺服器和用戶端都各自擁有自己的公鑰和密鑰。如何使用密鑰認證登入linux伺服器呢?
在使用密鑰認證遠端登入linux之前,我們先來談論下生成密鑰的兩種方法:
方法一:使用puyttygen.exe密鑰生成工具。
下載下傳生成密鑰工具
完整包 http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip 下載下傳後解壓,其中puyttygen.exe就是咱們所要用到的密鑰生成工具。
生成密鑰對
輕按兩下puttygen.exe, 右下角 “number of bits in a generated key” 把 “1024” 改成 “2048”, 然後點 “generate”, 這樣就開始生成密鑰了,請來回動一下滑鼠,這樣才可以快速生成密鑰對,大約十幾秒後就完成了。 “key comment:” 這裡可以保持不變也可以自定義,其實就是對該密鑰的簡單介紹; “kye passphrase:” 這裡用來給你的密鑰設定密碼,這樣安全一些,當然也可以留白,阿銘建議你設定一個密碼;”confirm passphrase:” 這裡再輸入一遍剛剛你設定的密碼。
儲存私鑰
點 “save private key”, 選擇一個存放路徑,定義一個名字,點 “儲存”。請儲存到一個比較安全的地方,謹防丢掉或被别人看到。
複制公鑰到linux
回到剛才生成密鑰的視窗,在 “key” 的下方有一段長長的字元串,這一串就是公鑰的内容了,把整個公鑰字元串複制下來。然後粘貼到你的linux的 <code>/root/.ssh/authorized_keys</code> 檔案裡。
[root@localhost ~]# mkdir /root/.ssh
[root@localhost ~]# chmod 700 /root/.ssh
首先建立/root/.ssh 目錄,因為這個目錄預設是不存在的,然後是更改權限。然後是把公鑰内容粘貼進 /root/.ssh/authorized_keys 檔案。
說明:記得關閉防火牆!
設定putty通過密鑰登陸
打開putty.exe點一下你儲存好的session,然後點右側的 “load”, 在左側靠下面點一下 “ssh” 前面的 +然後選擇 “auth”, 看右側 “private key file for authentication:” 下面的長條框裡目前為空,點一下 “browse”, 找到我們剛剛儲存好的私鑰,點”打開”。此時這個長條框裡就有了私鑰的位址,當然你也可以自行編輯這個路徑。然後再回到左側,點一下最上面的 “session”, 在右側再點一下 “save”.使用密鑰驗證登陸linux儲存好後session, 點一下右下方的 “open”. 出現登陸界面,你會發現和原來的登陸提示内容有所不同了。
[root@ceshiji ~]# ssh 192.169.5.74
last login: wed aug 16 15:14:25 2017 from 192-169-5-121-static.despegar.net
[root@eee ~]#
現在不再輸入root密碼,而是需要輸入密鑰的密碼,如果你先前在生産密鑰的時候沒有設定密碼, 你輸入root後會直接登陸系統。
方法二:使用腳本
腳本内容如下:
[root@ceshiji kewai]# cat gen-sshkey.sh
#!/bin/bash
ssh-keygen -t rsa -p '' -f '/root/.ssh/id_rsa'
說明:這個腳本是自動生成公鑰私鑰的,無須人工幹預按回車确認每個步驟!
如果将上面腳本生成的公鑰發送到另一台伺服器時,應将其重命名為authorized_keys ,指令如下:
###先遠端拷貝過去###
[root@ceshiji .ssh]# scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/
###再重命名###
[root@eee .ssh]# mv id_rsa.pub authorized_keys
這樣在ceshiji上遠端登入eee就可以輸入root之後,直接登入系統啦!