Ssh

openssh - 將 ssh 密鑰從 putty 添加到 authorized_keys

  • April 22, 2020

一位同事向我提供了一個 ssh 密鑰,以將其添加到authorized_keyslinux 伺服器上的帳戶的文件中,以便他們可以訪問該帳戶。

該文件看起來像這樣:

---- 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
  • 刪除BEGINEND
  • 可選擇刪除該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/---.*//'

引用自:https://serverfault.com/questions/797044