Ssh
openssh - 將 ssh 密鑰從 putty 添加到 authorized_keys
一位同事向我提供了一個 ssh 密鑰,以將其添加到
authorized_keys
linux 伺服器上的帳戶的文件中,以便他們可以訪問該帳戶。該文件看起來像這樣:
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20160816" AAAAB3NzaC1yc2EAAAABJQAAAQEApoYJFnGDNis/2oCT6/h9Lzz2y0BVHLv8joXM s4SYcYUVwBxNzqJsDWbikBn/h32AC36qAW24Bft+suGMtJGS3oSX53qR7ozsXs/D lCO5FzRxi4JodStiYaz/pPK24WFOb4sLXr758tz2u+ZP2lfDfzn9nLxregZvO9m+ zpToLCWlXrzjZxDesJOcfh/eszU9KUKXfXn6Jsey7ej8TYqB2DgYCfv8jGm+oLVe UOLEl7fxzjgcDdiLaXbqq7dFoOsHUABBV6kaXyE9LmkbXZB9lQ== ---- END SSH2 PUBLIC KEY ----
(好吧,sshd)的手冊頁
authorized_keys
清楚地表明該文件希望每個鍵佔用一行。所以我想我需要將此密鑰轉換為單行格式?我該如何做到這一點?
這個問題有一個公認的答案,但我認為值得注意的是,有一種方法可以使用該
ssh-keygen
工具而不是sed
:ssh-keygen -i -f ssh2.pub > openssh.pub
ssh2.pub
您現有的 ssh2 密鑰在哪裡,openssh.pub 將是 openssh 格式的密鑰。如果您只想複製和粘貼,則可以省略重定向並使用:ssh-keygen -i -f ssh2.pub
- 刪除
BEGIN
和END
線- 可選擇刪除該
Comment
行(如果您想稍後將其添加為評論,您可以記下這一點)- 刪除所有剩餘的換行符
- 將文本“ssh-rsa”添加到行首
現在的關鍵變成了:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEApoYJFnGDNis/2oCT6/h9Lzz2y0BVHLv8joXMs4SYcYUVwBxNzqJsDWbikBn/h32AC36qAW24Bft+suGMtJGS3oSX53qR7ozsXs/DlCO5FzRxi4JodStiYaz/pPK24WFOb4sLXr758tz2u+ZP2lfDfzn9nLxregZvO9m+zpToLCWlXrzjZxDesJOcfh/eszU9KUKXfXn6Jsey7ej8TYqB2DgYCfv8jGm+oLVeUOLEl7fxzjgcDdiLaXbqq7dFoOsHUABBV6kaXyE9LmkbXZB9lQ== rsa-key-20160816
除了附加註釋(假設 GNU )之外,這個單行程式碼將完成上述所有操作
sed
:sed key.pub -e 's/---- B.*/ssh-rsa /;/Comment:/d;'|sed ':a;N;$!ba;s/\n//g;s/---.*//'