openssh - 将 ssh 密钥从 putty 添加到 authorized_keys

Mic*_*ade 17 ssh putty ssh-keys

一位同事向我提供了一个 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 ----
Run Code Online (Sandbox Code Playgroud)

authorized_keys(嗯,sshd)的手册页清楚地表明该文件希望每个键占用一行。所以我想我需要将此密钥转换为单行格式?我该如何实现?

Cra*_*son 17

  • 删除BEGINEND
  • (可选)删除该Comment行(如果您想稍后将其添加为评论,可以记下这一点)
  • 删除所有剩余的换行符
  • 将文本“ssh-rsa”添加到行首

关键现在变成:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEApoYJFnGDNis/2oCT6/h9Lzz2y0BVHLv8joXMs4SYcYUVwBxNzqJsDWbikBn/h32AC36qAW24Bft+suGMtJGS3oSX53qR7ozsXs/DlCO5FzRxi4JodStiYaz/pPK24WFOb4sLXr758tz2u+ZP2lfDfzn9nLxregZvO9m+zpToLCWlXrzjZxDesJOcfh/eszU9KUKXfXn6Jsey7ej8TYqB2DgYCfv8jGm+oLVeUOLEl7fxzjgcDdiLaXbqq7dFoOsHUABBV6kaXyE9LmkbXZB9lQ== rsa-key-20160816
Run Code Online (Sandbox Code Playgroud)

除了附加注释(这假设为 GNU sed)之外,这个单行代码将完成上述所有操作:

sed key.pub -e 's/---- B.*/ssh-rsa /;/Comment:/d;'|sed ':a;N;$!ba;s/\n//g;s/---.*//'
Run Code Online (Sandbox Code Playgroud)


小智 15

这个问题有一个公认的答案,但我认为值得注意的是,有一种方法可以使用该ssh-keygen工具而不是sed

ssh-keygen -i -f ssh2.pub > openssh.pub
Run Code Online (Sandbox Code Playgroud)

ssh2.pub您现有的 ssh2 密钥在哪里, openssh.pub 将是 openssh 格式的密钥。如果您只想复制和粘贴,则可以省略重定向并使用:

ssh-keygen -i -f ssh2.pub
Run Code Online (Sandbox Code Playgroud)