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

Как сделать в SSH приватный ключ из одной строки, из трех строк

у меня есть ssh-ключ, что-то вроде этого

-----BEGIN RSA PRIVATE KEY----- my_super_secret_password -----END RSA PRIVATE KEY-----

Конечно, этот ключ не работает. Когда я делаю ручные вещи, что-то вроде этого

-----BEGIN RSA PRIVATE KEY----- 
my_super_secret_password 
-----END RSA PRIVATE KEY-----

Оно работает. Когда я удаляю это -----BEGIN RSA PRIVATE KEY----- и это -----END RSA PRIVATE KEY-----, мой ssh-ключ не работает.

Итак, вопрос. Как я могу сделать автоматически с помощью какой-нибудь команды, например sed или awk, или любую другую команду, как я могу сделать из этой строки

-----BEGIN RSA PRIVATE KEY----- my_super_secret_password -----END RSA PRIVATE KEY-----

эти три струны

-----BEGIN RSA PRIVATE KEY----- 
my_super_secret_password 
-----END RSA PRIVATE KEY-----

Спасибо за вашу помощь. Если вы знаете какой-либо другой ответ на этот вопрос, я рад вас слышать. Причина, зачем мне это нужно, ведь у меня есть хранилище секретных ключей в AWS Secret Manager. Итак, этот менеджер хранит ключи только в одной строке.

Я бы лично кодировал ключ base64, сохранял его, а затем декодировал base64, когда он вам нужен.

Кодировать:

echo "-----BEGIN RSA PRIVATE KEY----- my_super_secret_password -----END RSA PRIVATE KEY-----" | openssl base64 | tr -d '\n'

Расшифровать:

echo "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLSBteV9zdXBlcl9zZWNyZXRfcGFzc3dvcmQgLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K" | openssl base64 -A -d

Что-то вроде этого, быстро и хитро.

echo "-----BEGIN RSA PRIVATE KEY----- my_super_secret_password -----END RSA PRIVATE KEY-----" | sed 's/\(KEY----- \)/\1\n/' | sed 's/\(-----END\)/\n\1/'