ssh使用秘鑰免密碼登錄


  使用ssh遠程連接服務器,有兩種身份校驗方式:賬號密碼和秘鑰。使用秘鑰的方式理論上更加安全,而且免去了輸入密碼的步驟,使用起來更方便(尤其對於sftp,scp等)。

  ssh秘鑰的生成和使用,網上很多教程,感覺不太完整,這里自己總結一下。

  1. 秘鑰由誰生成
    這是比較容易搞亂的一點。這里以A、B兩台服務器為例,假設A需要ssh登錄B,那么應該由那台服務器生成秘鑰呢。可能有人以為像門鎖一樣,主人家負責裝鎖配鑰匙,把鑰匙交給要開門的人使用,所以由被訪問的B服務器生成秘鑰。

    事實恰恰相反,秘鑰由訪問請求方A服務器生成,並把生成的公鑰交給B導入;公鑰可以在多台服務器導入,一台服務器導入了A的公鑰,即意味着承認A的有訪問自己權限,所以A可以用一套密鑰登錄多台服務器。

  2. 賬號
    訪問和被訪問的服務,需要有相同的賬號,而且密鑰由該賬號生成。

  3. 密鑰生成
    在A服務器上執行命令:
    ssh-keygen -t [rsa|dsa]
    rsa和dsa是生成密鑰常用的兩種加密算法,其他可選算法還有ecdsa、rsa1等。
    命令執行過程需要用戶輸入的地方連續回車即可(enter passphrase的別輸入,否則登錄的時候還是得輸入密鑰密碼)。
    執行成功后,在用戶home目錄下的.ssh子目錄里會生成私鑰文件和公鑰文件:id_rsa,id_rsa.pub或id_dsa,id_dsa.pub。

  4. 公鑰導入
    方法一:
    把公鑰文件id_rsa.pub上傳到B服務器,然后執行:
    cat id_rsa.pub >> ~/.ssh/authorized_keys
    將id_rsa.pub的內容,追加到文件~/.ssh/authorized_keys中

    方法二:
    在A服務器上使用命令cat ~/.ssh/id_rsa.pub查看公鑰內容,將內容復制追加到B服務器的文件~/.ssh/authorized_keys中(請注意不要刪除或覆蓋該文件中已有的內容)。

  5. 修改權限
    A服務器上的.ssh和秘鑰文件的權限在ssh-keygen生成時已設好,無須特別設置。B服務器上如果是首次添加authorized_keys,需要修改權限:
    chmod 600 authorized_keys
    設置authorized_keys權限

    chmod 700 -R .ssh
    設置.ssh目錄權限

  6. 登錄
    在A服務器上執行:
    ssh ip/hostname(B服務器的ip或主機名)
    即可登錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM