ssh-server 支援另一種認證方式-「金鑰」認證,使用者自行產生一對「公私鑰」,將私鑰內容複製到ssh-server上的認證檔裡,這樣我們便可以在有存放私鑰的主機上用ssh連線到遠端的ssh-server,而server會在連線時比對私鑰內容,符合正確便認證通過。
整個操作過程如下:
首先我們在clien端要先安裝ssh的client端套件(openssh)。
透過該透件提供的指令「ssh-keygen」來製造金鑰,預設是以rsa的方式產生金鑰,並指定金鑰存放的位置。上圖顯示,在本機使用者以「帳號:geego」產生rsa的金鑰,該金鑰存放在預設的位置(使用者帳號的家目錄底下)「/home/geego/.ssh/」。
從上圖我們可以看到在本機上,ssh-keygen指令已經幫我們產生一對公鑰(id_rsa.pub)和私鑰(id_rsa),並放在該使用者(geego)的家目錄底下「/home/geego/.ssh/」。
接下來,要將私鑰放到要登入的遠端Server上,在本機透過指令「ssh-copy-id」這個指令,如下圖:
指令「ssh-copy-id」,會將使用者指定的「個人私鑰內容(id_rsa)」放到遠端的server上登入帳號(southwind)的認證檔(/home/southwind/.ssh/authorized_keys)。
接下來用ssh登入到server看看
可以看到在本機帳號「geego」,用帳號「southwind」登入到遠端server。
可以在遠端登入的帳號(southwind)的家目錄下看到認證檔「authorized_keys」,該檔紀錄了所私鑰內容,並詳註這一把私鑰是哪一個主機的哪一個帳號(geego)。
結論:
ssh可以幫我們製造公私鑰,並用私鑰的比對來作連線的認證。透過ssh-copy-id指令將私鑰的內容放到遠端server的認證檔裡(authorized_keys)。ssh會比對自己server裡的認證檔和要求連線主機的私鑰這兩個內容,如果相符就可以允許連線。不相符便重回帳密認證的方式。
操作流程:
a.ssh-keygen,在本機產生金鑰(id_rsa, id_rsa.pub)。
b.ssh-copy-id,將本機的金鑰的私鑰(id_rsa)內容,複製到遠端server的認證檔(autorized_keys)裡
沒有留言 :
張貼留言