ssh基於密鑰認證的登錄方式

      (ssh:secure shell, protocol, 22/tcp,安全的遠程登錄)            

SSH相關的安裝包:

    openssh-clients.x86_64 SSH的客戶端安裝包

    openssh-server.x86_64  SSH的服務器端安裝包

    openssh.x86_64  SSh的通用設置,服務於服務器端和客戶端

 

基於密鑰的認證:

1、使用到的命令:

a)  ssh-keygen    生成ssh認證的私鑰和公鑰

b)  ssh-copy-id    ssh認證的公鑰從客戶端拷貝到服務器端生成authorized_keys文件,該文件中存放公鑰。

2、客戶端的操作:

        a)  生成密鑰對:

     非交互式:ssh-keygen –t rsa [-P ' ' ] [-f "~/.ssh/id_rsa"]

        -t:指定加密的方式

        -P:指定加密的密碼

        -f:指定生成的私鑰地址

   (該方式生成的私鑰在用於認證的時候需要輸入指定的密碼)

    交互式:ssh-keygen (直接回車就可以了)

    (該方式會進行各種確認,提示是否生成相應的文件。)

       b) 把公鑰文件傳輸至遠程服務器對應用戶的家目錄:

        ssh-copy-id [-i [identity_file]][user@]host

    例如:ssh-copy-id  [email protected]

    會自動生成authorized_keys文件,這裏是存放的id_rsa.pub文件中的公鑰。

3、設置代理ssh-agent

    如果密鑰設置了密碼,每次輸入都很麻煩,這時候可以用ssh-agent代理,只要輸入一次口令,之後都可以用。退出會話之後就失效。

        ssh-agent bash   啓動代理

       ssh-add  添加代理密碼(這個是交互式命令,如果私鑰有密碼,會自動提示輸入密碼。)

4、實現多臺客戶端的免密登錄

    以上介紹的都是兩臺機器之間的免密登錄,每臺機器對應家目錄下的.ssh/目錄下只有一個authorized_keys文件,如何實現同一臺服務器可以多臺客戶端免密登錄呢?

根據之前我們介紹的,在authorized_keys這個文件中存放的是客戶端ssh認證的公鑰,所以我們可以參考其中的格式,將客戶端ssh認證的公鑰全部存放到其中即可。

    當然,我們就不能重複使用ssh-copy-id這個命令了,否則將會造成覆蓋,達不到預期的效果。

  a) 將客戶端對應家目錄中.ssh/目錄下生成的id_rsa.pub文件拷貝到服務器端

    scp ~/.ssh/id_rsa.pub 172.17.253.23

  b) 將從客戶端拷貝過來的公鑰內容,添加到authorized_keys文件中,具體做法如下:

    cat id_rsa.pub >> ~/.ssh/authorized_keys 

  c)只要將每一臺客戶端的公鑰都添加到服務器端authorized_keys文件中,就可以實現多臺客戶端同時免密登錄服務器了。


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