ssh-keygen — создать файл открытого ключа из файла закрытого ключа, хранящегося в s3

Я пытаюсь сохранить (добавить) открытый ключ в файл (~/.ssh/authorized_keys) для закрытого ключа (private-key.pem), который на самом деле хранится в s3, все с использованием сценария bash.

Получение открытого ключа с помощью файла:

ssh-keygen -y -f /path/to/private-key.pem

Выход:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V
hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr
lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ
qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb
BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE

Затем вручную добавьте содержимое в файл назначения, это нормально, но я хочу сделать это с помощью команды, извлекая файл, хранящийся в s3 (общедоступный URL-адрес), и добавляя вывод содержимого в файл (~/.ssh/authorized_keys ).

Я пробовал это:

ssh-keygen -y -f /dev/stdin <<< `curl https://bucket.s3.amazonaws.com/private-key.pem` >> ~/.ssh/authorized_keys

Выход:

Load key "/dev/stdin": invalid format

И это:

curl https://bucket.s3.amazonaws.com/private-key.pem | ssh-keygen -y -f /dev/stdin >> ~/.ssh/authorized_keys

Выход:

Permissions 0660 for '/dev/stdin' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/dev/stdin": bad permissions

person jhuamanchumo    schedule 13.04.2020    source источник
comment
Это не имеет смысла, потому что команда ожидает файл: ssh-keygen -y [-f input_keyfile] ref: man7.org/linux/man-pages/man1/ssh-keygen.1.html вывод, как и ожидалось: Нет такого файла или каталога   -  person jhuamanchumo    schedule 13.04.2020


Ответы (1)


Посмотрев другой связанный вопрос, обнаружил, что fifo или именованные каналы могут иметь разрешения, поэтому я попробовал это и сработал, как и ожидалось, надеюсь, это кому-нибудь поможет.

  1. создать именованный канал с разрешением (канал с именем fifo)

    mkfifo -m 600 fifo
    
  2. выполнить команду, указывающую на этот канал

    curl -s https://bucket.s3.amazonaws.com/private-key.pem > fifo | ssh-keygen -y -f fifo >> ~/.ssh/authorized_keys
    
  3. все в одной команде

    mkfifo -m 600 fifo && curl -s https://bucket.s3.amazonaws.com/private-key.pem > fifo | ssh-keygen -y -f fifo >> ~/.ssh/authorized_keys
    
person jhuamanchumo    schedule 13.04.2020