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、實現多臺客戶端的免密登錄
以上介紹的都是兩臺機器之間的免密登錄,每臺機器對應家目錄下的
根據之前我們介紹的,在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基於密鑰認證的登錄方式