ssh-keygen - 从存储在 s3 中的私钥文件创建 public 密钥文件

ssh-keygen - create public key file from private key file stored in s3

我正在尝试将 public 密钥存储(附加)到一个文件 (~/.ssh/authorized_keys) 中,以获得实际上是私钥 (private-key.pem)存储在 s3 中,全部使用 bash 脚本。

正在使用文件检索 public 密钥:

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

然后手动将内容添加到dest文件中,这很好,但我想用命令来完成,检索存储在s3(public 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

看了其他相关问题,发现fifo或named pipes可以有权限,所以我试了一下,效果不错,希望对大家有帮助。

  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