【问题标题】:ssh-keygen - create public key file from private key file stored in s3ssh-keygen - 从存储在 s3 中的私钥文件创建公钥文件
【发布时间】:2020-07-25 14:50:40
【问题描述】:

我正在尝试将公钥存储(附加)到文件(~/.ssh/authorized_keys)中,以获得实际存储在 s3 中的私钥(private-key.pem),全部使用 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

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

【问题讨论】:

标签: ssh openssh ssh-keygen


【解决方案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
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2020-06-30
    • 2020-11-27
    • 2012-09-14
    • 2014-08-24
    • 2019-05-02
    • 2019-05-05
    相关资源
    最近更新 更多