【问题标题】:How to write a string containing private ssh key to a file?如何将包含私有 ssh 密钥的字符串写入文件?
【发布时间】:2019-06-11 22:05:10
【问题描述】:

我将 Azure DevOps 用于我的管道。出于测试目的,我创建了一个变量 $key 来存储私钥。我想使用该密钥通过 SSH 连接到远程服务器。当我尝试将 $key 写入文件然后使用它时,例如

ssh user@10.10.10.10 -i keyfile

我被要求输入密码。我相信这与私钥文件的格式有关。它显示为一个没有换行符的长字符串。

格式化字符串并将其写入 .pem 文件的最佳方法是什么?

【问题讨论】:

  • 您可能想要启动一个 ssh 代理,添加密钥,然后手动输入密码。您只需执行一次,就不必为您的 ssh 会话提供密钥。
  • 感谢您的评论格伦。我正在尝试使用 Azure DevOps 将其自动化。密钥需要从变量(现在)安装在构建服务器上,因此我无法与会话交互。
  • 然后您需要创建一个没有密码的新密钥。
  • 他们的密钥没有密码。我将密钥文本存储为变量并从该变量创建一个文件。我认为这是不正确的文件格式,即没有任何换行符。我正在寻找如何正确格式化从包含换行符的字符串创建的私钥。
  • 我明白了。我不知道私钥文件的具体格式是什么。您可以尝试使用 ssh-keygen 生成密钥,并使用您需要创建的内容作为示例创建的私钥文件。

标签: linux bash ubuntu


【解决方案1】:

如果你想使用私钥,你应该将你的公钥添加到.ssh/authorized_keys

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub | ssh you@server 'cat >> ~/.ssh/authorized_keys'
$ ssh -i ~/.ssh/id_rsa you@server

请注意,您应该允许 sshd 通过公钥登录:

PubkeyAuthentication yes

如果您无法更改服务器上的设置,您可能需要使用expect。它不太安全,寿。阅读this了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 2019-04-25
    • 2013-06-19
    • 1970-01-01
    • 2020-12-07
    • 2017-08-22
    • 1970-01-01
    • 2022-11-30
    相关资源
    最近更新 更多