mac majave 10.14.1 ssh-keygen 金鑰格式問題

前幾天新工作到職,第一件事情就是用公司信箱加入 SSH key
過去新建都是要用的時候去 google 指令
你查到我查到大家查到的應該都是

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"


就在我以為這麼簡單產出的時後
從終端機得到了 format 錯誤的訊息

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

當初有用相同的指令產過 key 一切正常,我打開金鑰檔案看到的開頭是
-----BEGIN OPENSSH PRIVATE KEY-----
果然是錯誤的啊!應該要是 RSA 而不是 OPENSSH
問了很多人都是一樣的反應
你指令沒加 -t rsa 吧
但是當我請他們現場產一組 key 的時候也跟我得到一樣的 OPENSSH
沒有 SSH key 沒辦法做事情啊!實在想不出辦法之下
我們嘗試直接在 server 下一樣的指令... 產出來的 key 可以用
看來是 mac 的問題了... 不對啊前幾個月我才產生過一組 key 用在 gitlab 上
直到我找到 這一篇
The default export publickey format is indeed rfc4716, but the format in the Q is an internal privatekey format and is OpenSSH's 'new' format, which didn't exist in 1999(!), and is no longer in described in current

翻譯大概是:
「majave 10.14.1 版本在 sshkey-gen 時會遇到產出不是預期的 RSA 格式,而是 openSSH目前網路上所有能找得的資源基本上都不適用,要在指令加上 -m PEM」

感恩蘋果,讚嘆蘋果
居然搞出這麼雷的一個東西,居然去改變預設的ssh-keygen format 格式
真相大白,於是得到新的指令 for mac majave 10.14.1 版本

ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"

於是解決這個問題,因為很多人的 ssh-key 都是上古時期用到現在
甚至換電腦也是把金鑰搬移過去,我想這個問題應該會越來越常發生
而多會發生在新人身上,其他工程師一定會覺得這東西這麼簡單為什麼新人搞不定
殊不知藏了一個這麼大的雷,自己下來可能也會被雷一遍

希望這一篇可以幫上一些忙
如果被幫到可以在留言幫我 +1 一下讓我的虛榮心微微滿足一下


留言