1. 程式人生 > >ssh基於密鑰認證的登錄方式

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

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]][[email protected]]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文件中,就可以實現多臺客戶端同時免密登錄服務器了。


本文出自 “Linux運維” 博客,請務必保留此出處http://jk6627.blog.51cto.com/12002684/1970636

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