(ssh:secure shell, protocol, 22/tcp,安全的遠程登陸)
shell
SSH相關的安裝包:安全
openssh-clients.x86_64 SSH的客戶端安裝包bash
openssh-server.x86_64 SSH的服務器端安裝包服務器
openssh.x86_64 SSh的通用設置,服務於服務器端和客戶端ssh
基於密鑰的認證:tcp
一、使用到的命令:ide
a) ssh-keygen 生成ssh認證的私鑰和公鑰加密
b) ssh-copy-id 將ssh認證的公鑰從客戶端拷貝到服務器端生成authorized_keys文件,該文件中存放公鑰。spa
二、客戶端的操做:代理
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 root@172.17.254.244
會自動生成authorized_keys文件,這裏是存放的id_rsa.pub文件中的公鑰。
三、設置代理ssh-agent
若是密鑰設置了密碼,每次輸入都很麻煩,這時候能夠用ssh-agent代理,只要輸入一次口令,以後均可以用。退出會話以後就失效。
ssh-agent bash 啓動代理
ssh-add 添加代理密碼(這個是交互式命令,若是私鑰有密碼,會自動提示輸入密碼。)
四、實現多臺客戶端的免密登陸
以上介紹的都是兩臺機器之間的免密登陸,每臺機器對應家目錄下的.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文件中,就能夠實現多臺客戶端同時免密登陸服務器了。