从命令行而不是文件将私钥传递给 scp

Jul*_*ian 5 bash scp private-key

有没有办法将私钥的内容直接传递给scp命令,而不必将其复制到文件并通过-i /path/to/key.pem选项指向它?

所以,而不是做:

scp -i key.pem source target

我可以执行以下操作吗?

scp -i '-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAMIIEowIBAA...\n' source target

当然,我试过这个,但它不起作用,但也许这可以通过一些 BASH 管道、输出重定向或类似的东西来实现。

我需要这样做的原因是因为我无法将密钥存储在文件系统中(这是一个非常漫长而无聊的故事),并且该命令每次都需要使用不同的密钥执行数百万次,因此额外的磁盘 i/o 对我们的结果很重要。

vor*_*aq7 4

如果您不能透露更多信息,我们真的帮不了您:关于服务器故障的问题需要为我们提供足够的上下文来智能地分析问题,而这个则没有。

我可以明确地告诉你的是,“在命令行上传递密钥”是一个坏主意:如果你这样做,你就会继承这个问题中讨论的所有问题,这基本上意味着机器上的任何人都可以看到你的私钥。(这就是为什么sshscpsftp命令不允许您执行此操作。)

考虑使用ssh-agent来处理您的密钥 - 这里有一些额外的含义,但您基本上可以将密钥存储在文件系统上,将它们加载到代理中,然后允许代理将密钥传递给客户端以进行身份​​验证(这应该可以解决或至少减少您的性能问题)。

如果ssh-agent不适合您的需求,您几乎只能破解并重新编译 SSH 客户端,以某种方式支持您想要的功能。