Nic Lin's Blog

喜歡在地上滾的工程師

SSH 公開金鑰認證(Public Key Authentication):免密碼登入 Linux

這篇教你如何不需密碼就可登入Client,一般我們的Client多半使用Linux系統。

我們打開terminal的ssh登入該主機。

$ ssh example@111.222.333.444

在家目錄生成你的ssh key

$ ssh-keygen

在產生金鑰的過程中,會詢問一些問題,對於一般的使用者而言,全部都使用預設值(直接按下 Enter 鍵)即可。

Enter file in which to save the key (/home/example/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

最後看到這個畫面就代表你的key已經製作完成

The key fingerprint is:
94:f4:44:2a:xx:xx:ba:c4:29:01:0e:43:f8:82:0f:71 example@xxxxx-xxxx
The key's randomart image is:
+--[ RSA 2048]----+
|   o+ oo+.+ .    |
|. E  = . O +     |
| + .  o = *      |
|o . .  o o .     |
| o .    S .      |
|  .              |
|                 |
|                 |
|                 |
+-----------------+

接下來我們切換到 .ssh 的目錄來製作登入免密碼的機關

$ cd .ssh/

如果輸入 ls

有看到id_rsa 以及 id_rsa.pub 兩隻key就是正確的

接下來把自己本機電腦的id_rsa.pub打開(如果沒有的話,請照前面的步驟在自己的電腦做一次 ssh-keygen就會有了)

大概會長這樣請先把他複製起來

ssh-rsa AAAAB3NzaC1yc2EAAAADAQAewewewedLB/qIyhMC20FSr9lwpTE8w+xQ35HW+GEdZgFPn3VK4Az6TszBcfKVdhHMRVfbRDCAJIQXhYlvkPewewPbEseuaPEA7UPCRHeaM0lfmy+aXWpBVkliAqHbPHX7gx1eMiAJ4gbqzUg+5i/JwNOSoclZcBsIOiJUJ228zF+180LvNkREpcCgaQd2DPxBNd4LITNflNBNNwzIq1SvHgQCbyMBtIvMzYOrowI1ApmVqUTw+5lHRqWTF32sSYB/q6dvA6frEhIYvsbnt41jOT47Z7TrsYABsvbX1XIiDTLj3iZ4kiVU/xXapFPe5H73JtqsUNmEk2dNrnmOEumnBX+6Ko5T Nic@Nics-MacBookPro.local

然後到你的遠端機器上建立一個清單

$ vi .ssh/authorized_keys

將剛剛複製的公鑰直接貼進去

這樣就完成免密碼登入了!

試試看再次登入遠端機器是否不用密碼了

原理解說

id_rsa: private key id_rsa.pub: public key 將 public key(id_rsa.pub) 拷貝到遠端的電腦後, 加到那 user 的 .ssh/authorized_keys 中.

之後連線時, 就會用本機的 private key(id_rsa) 與遠端電腦的 public key(authorized_keys) 做認證, 確認完成就可以直接登入, 不需輸入帳號密碼, 而且也比較安全.

comments powered by Disqus