天天看點

Linux下ssh秘鑰方式登入遠端伺服器

一.SSH秘鑰方式登入遠端伺服器原理: 1. 在用戶端生成密鑰對【公鑰和私鑰】。 2. 用戶端把自己的公約拷貝到伺服器上,伺服器儲存并重命名為authorized_keys當成驗證檔案。 3. 當用戶端再次連接配接到伺服器的時候,首先把自己的公約發給伺服器,伺服器收到後會和authorized_keys對比,如果不一樣,直接拒絕,如果一樣的話,伺服器會用用戶端的公約加密一個挑戰(一個随機的資料),然後将加密的資料發給用戶端。  5. 用戶端收到之後,會用自己的解密,解密出來之後再把原始資料(就是伺服器生成的那個挑戰)發送給伺服器 6. 伺服器檢查客戶單是否解密正确,如果解密正确的話,用戶端就直接登陸成功。

二.ssh-agent就是一個密鑰管理器,運作ssh-agent以後,使用ssh-add将私鑰交給ssh-agent保管,其他程式需要身份驗證的 時候可以将驗證申請交給ssh-agent來完成整個認證過程。   三.具體操作:  1. [[email protected] ~]# ssh-keygen -t rsa        //采用rsa的加密方式的公鑰/私鑰對 Generating public/private rsa key pair.    //提示正在生成 Enter file in which to save the key (/root/.ssh/id_rsa):   //詢問輸入私鑰和公鑰放在那裡,Enter Created directory '/root/.ssh'.                    //私鑰對在這個目錄下 Enter passphrase (empty for no passphrase):       //這裡可以給私鑰設定密碼(敲Enter可實作自動登入,登入時不需要私鑰密碼) Enter same passphrase again:   //提示再次輸入私鑰密碼,再次回車 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub.  //提示公鑰和私鑰已經存放在這個目錄下 The key fingerprint is:         de:9c:47:95:19:1c:da:83:9f:b2:f8:fd:30:27:70:74  [email protected] //提示key的指紋 注:#ssh-keygen -b 1024 -t dsa   //還可以采用dsa的加密方式 -b  1024 采用長度為1024位元組的公鑰/私鑰對,最長4096位元組,一般1024或2048 就可以了,太長的話加密解密需要的時間也長。

-t  dsa  采用dsa加密方式的公鑰/私鑰對,除了dsa還有rsa方式,rsa方式最短不能小于768位元組長度。

2.  [[email protected] ~]# cd /root/.ssh [[email protected] .ssh]# ls id_rsa  id_rsa.pub [[email protected] .ssh]# ssh 192.168.8.71 The authenticity of host '192.168.8.71 (192.168.8.71)' can't be established. RSA key fingerprint is 11:21:c7:14:71:a6:68:b3:6c:fb:cd:b2:25:21:bd:9f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.8.71' (RSA) to the list of known hosts. [email protected]'s password:  Last login: Wed Feb  6 19:43:02 2013 from 192.168.8.70 [[email protected] ~]# exit [[email protected] .ssh]# ls id_rsa  id_rsa.pub  known_hosts 這裡為了說明一下known_hosts這個檔案當ssh過其他機器時就會生成這個檔案,再一次ssh時就不會有yes的那個選項了 [[email protected] .ssh]# scp id_rsa.pub 192.168.8.71:/root/.ssh/authorized_keys [email protected]'s password:  id_rsa.pub                                  100%  404     0.4KB/s   00:00     [[email protected] .ssh]# ssh 192.168.8.71 Last login: Wed Feb  6 19:43:39 2013 from 192.168.8.70 [[email protected] ~]#  注:可以通過ssh-copy-id指令[實為腳本]進行拷貝公鑰後,可以再伺服器端不用設定相應的權限,因ssh-copy-id已經幫你設定好了。 這裡我把id_rsa.pub直接改名為authorized_keys了,如果之前另一台機器有這個檔案,不要直接改名,先scp過去,然後在另一台機器上執行#cat id_rsa.pub >> /root/.ssh/authorized_keys指令,因為authorized_keys可能會儲存着其他的公鑰  另一台機器再做一遍相同操作就可以互相ssh加密連接配接   注意:  .ssh 的權限必須是700.否則ssh伺服器會拒絕登入        私鑰的權限必須是600.否則ssh伺服器會拒絕登入   3.把私鑰加密 [[email protected] ~]# eval `ssh-agent` Agent pid 14877 [[email protected] ~]# ssh-add Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa) 如果之前給私鑰密碼#ssh 192.168.8.71時是需要輸入私鑰密碼的,執行完這兩條指令就不用了,#ssh-add不需要輸入私鑰密碼,這是驗證就交給ssh-agent來管理

轉載于:https://blog.51cto.com/redkey/1187467

繼續閱讀