Назад | Перейти на главную страницу

openssh - Добавление ssh-ключа из шпатлевки в 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 ----

Страница руководства для authorized_keys (ну, sshd) дает понять, что файл ожидает, что каждый ключ займет одну строку. Полагаю, мне нужно преобразовать этот ключ в однострочный формат? Как мне этого добиться?

  • Удалить 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/---.*//'

На этот вопрос есть принятый ответ, но я думаю, что стоит отметить, что есть способ сделать это с помощью ssh-keygen инструмент, а не sed:

ssh-keygen -i -f ssh2.pub > openssh.pub

куда ssh2.pub это ваш существующий ключ ssh2, а openssh.pub будет ключом в формате openssh. Если вы просто хотите скопировать и вставить, вы можете не использовать перенаправление и использовать:

ssh-keygen -i -f ssh2.pub