不輸入密碼ssh直接登錄Linux主機的實踐與總結

服務器環境:以XX雲服務器,Linux版本 - CentOS爲例
客戶端環境:以Mac OSX Terminal爲例,其他大同小異

概念說明:     
     在Terminal中用ssh命令登錄服務器每次都要輸入密碼,雖然可以複製/粘貼密碼,但登錄後一段時間不操作,服務器會自動斷開連接,連接時又要複製/粘貼密碼,還是有些不方便。
     方法就是使用ssh-keygen -t [rsa|dsa]命令在本地環境生成一對公鑰和私鑰,然後我們把公鑰複製到雲服務器對應的authorized_keys文件中,登陸的時候雲服務器就用公鑰來驗證我們本地的私鑰。我們先介紹一下公鑰,私鑰和數字簽名的概念:
  • 公鑰加密:假設我們有一個公鑰public,還有一個私鑰private,當我們跟好朋友Linda傳送文件的時候,我們希望保護數據,所以我們可以把公鑰pubic發送給Linda對要發送的文件加密。就算別人截取了這個文件,如果沒有私鑰private,還是無法查看文件內容。
  • 私鑰簽名:假設我用私鑰private加密一個文件(當然只有我可以用私鑰加密,因爲只有我保有私鑰private),然後所以擁有我的公鑰public的人都可以解密這個文件,而且她們能確認發送方的身份就是我,因爲能夠用我的公鑰解密的數據,必然是用我的私鑰加的密,這個過程叫做數字簽名。當然具體的過程要稍微複雜一些。用私鑰來加密數據,用途就是數字簽名。
  • 總結:
    • 公鑰和私鑰是成對的,它們互相解密。
    • 公鑰加密,私鑰解密。
    • 私鑰數字簽名,公鑰驗證。
  • 舉例:兩個用戶Alice 和Bob,Alice 想把一段明文通過雙鑰加密的技術發送給Bob,應該是Alice 和Bob都有一對公鑰和私鑰,那麼加密解密的過程如下:
    1. Bob 將他的公開密鑰傳送給Alice , Alice 將自己的公鑰給Bob。
    2. Alice 先用Bob的公開密鑰加密她的消息
    3. 然後Alice 加上自己的私鑰(數字簽名),然後傳送給Bob。
    4. Bob 先用Alice 的公鑰解密證明是Alice發的
    5. 然後Bob 再用自己的私鑰解開Alice 傳來的用自己的公鑰加密的文件。

具體操作:
  1. 現在客戶端生成公鑰私鑰:進入客戶端的~/.ssh/目錄,如果沒有我們自己新建一個,在執行命令生成密鑰:
    cd ~/.ssh/          
    ssh-keygen -t rsa
    網上教程中在ssh-keygen創建密鑰的時候,第一個要輸入密鑰存放地址時,我們直接回車選擇默認地址,“Enter passphrase (empty for no passphrase):”和下一行“Enter same passphrase again:”兩處也都是直接回車,就是說沒有創建口令短語(passphrase)。但是這是非常不安全的,如果一旦別人獲取了你的私鑰,那也可以直接免密直接登錄你的服務器,所以還是建議要輸出口令短語。更詳細請參考照:
    http://www.cnblogs.com/panblack/p/Secure_ssh_trust_connection.html
  2. 下面需要把公鑰到目標服務器的~/.ssh/authorized_keys文件內:
    1. 此時,已經在客戶端環境Mac上生成了一個公鑰 id_rsa.pub和一個私鑰 id_rsa,我們將公鑰複製到服務器的~/.ssh/文件夾下
      scp id_rsa.pub username@server:~/.ssh/id_rsa.pub
    2. 然後登錄服務器,將從客戶端複製而來的公鑰裏的內容添加到authorized_keys(即註冊)中:
      ssh username@server
      cd ~/.ssh
      cat id_rsa.pub >> authorized_keys
    3. 刪除服務器裏的公鑰
      rm id_rsa.pub
  3. 再次登錄服務器,如果我們在生成祕鑰時輸入了口令短語,則需要輸入口令短語,如果沒有創建口令短語那麼此時已經直接登錄了。
  4. 如果不能免密登錄,可能還需要設置authorized_keys權限
    $ chmod 600 authorized_keys 
    設置.ssh目錄權限
    $ chmod 700 -R .ssh
  5. 那麼現在問題又來了,我們添加了口令短語,私密安全了,但是登錄麻煩了,自動化運維也不可能了。咋麼辦呢,我們可以用
    ssh-agent(ssh代理守護進程),讓系統記住口令密語。具體操作:
    http://www.cnblogs.com/panblack/p/Secure_ssh_trust_connection.html

 




     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章