如何将包含私有 ssh 密钥的字符串写入文件?

如何将包含私有 ssh 密钥的字符串写入文件?

我正在使用 Azure DevOps 来构建管道。我有一份公钥和私钥的副本。公钥已通过使用 Terraform 的创建过程添加到服务器。

为了测试目的,我创建了一个变量 $key 来存储私钥。该变量是 DevOps 管道的一部分,可以通过构建服务器上的 bash 脚本检索。

我想使用该密钥通过 SSH 连接到远程服务器。当我尝试将 $key 写入文件然后使用它时,例如

ssh [email protected] -i keyfile

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

私钥回显如下:

-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAiyaucjBXLAy4yEFKez7b1uBUNmkycyAeOE3f9a37XqX9WRj46mH/cUE+18Oc DZWQyu5Pei3wRarv19E6XMLYcis63pbogncdIqHlvc25QLHKz+mZ6TQm/CDBKhK5GHifJSODcsNa YH7Gwy7y3T46LOicoz+cKhPm7McQ3uthSSsEZQyjlnOhQ+s4cjPa29rszlnp8HvMm+hniouCD2Kh b9/xv0yomh1d+pd3RtvdksqX4Zac0vmshpeMYZEVTPabhkfJksd8VnYYzGjjlf0Axxf+gSEM8Ime LGtdcefl4S/lNwLuYBZxjgqbSl23oHsT/ZmiWxIXfqBOHm6mcv+qLQIDAQABAoIBAGF6aX4Iqyhq iQ+P3XNU54AxigzLyNGpUEI1G4zpokv9j+rYeZcHq4BVKobPuwQxIEtogjie8dB8HKRdJ7tPq3zf F9BSevLaKojWTTCXaw0M/3yCspURObYp4+drUkr4RNQpeq3sd+VdKjQVMYEXVH2dPg2GRAmeA4kf MoxW68Hq1w2bByUnrrehoidu46r6KBlQyUApJmu5y2Xbo5izbyEoRQoGF0Sz2EHW2AckxTwMkovF 78dh8L3b3DAd0aAF8ijewA/aCy+gSzZzihGcpFMKVxVh5McrzssS74ThjaeKKnDRIPlP02je0rtf DOuWoivc9RP/o5nJvNU2qzLri4ECgYEA7edgmf/FVIrIBc8QqWpvF0WYhWMusgBm8DUvOGnnevPo MFRgNTAjl+rDKfTvOTnphYrEKYoLJTDpNZGvopSUsra5IANAcHSxM8dpUyXGqIlIC9rdzOQNZhON Ss/f4d9wT1fX8mWaIPiC0wC/s1V9fCRKDKARhc4mtIKlm+S7Wj0CgYEAlbxTLuoHN6Na7UOoPpp8 HEPGGItHx/QFHLwFuhe663xLaFIXqJsVgQUd88dUs5lRZ6ydGba6LeUNEOvFvHiSV7cj0YydvyJJ 7wjlu5Ge13fYTNm2uEDDhARLBum2Rx1wwBD/ovsjnevNjZeYU9ahZhiMjIv90RT7mTDLGiNBvrEC gYBWfXHfSt9gtvu1MOxryygMG98xTzeguwixd4RtTAM97gKR33sCmze1eUHutP9rnKRLSoG6YFdg 9AE02nwx7TaKKmfvPX9l4uaxXmPqOKeaih5JQQ61+Irue1k4w44vPd5E2jjGBS4dontdXr5S4le2 lDLfmCoGrUXhBkZTALskOQKBgDRr2jNye1RfPFYUebJxI0JB9/hfyqGWLLQCn36nECmhOkUreFzu 7nhc8j+GaYD3DCjfpaB6+HNY3VovMOrqy1EqLMAQGqnvtzKYStWABbwpmPBOyEl5Yvm1Bw9Egywi gna7fMPyaGXBSBVqHUo8ugSkU5Bg8ltgnTTkgDaGYV4BAoGBAKKAaI7hajJKYkWgbW5L744f2XvX coi5CAEdqQ+Bfah/THt+s57tfAOAiQWutnmv7vzLlWjiHip+MrJYnQ+Whb5VzeDS1qNYbcZfgNNl 6OOkPcq7v0NVczeaoGWtKFdL4ZCcwciw08YolSthBUvY8ZAZoLoyE3YoBFaa7VKil1iO -----END RSA PRIVATE KEY-----

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

或者,如果这是一个愚蠢的问题,那么存储自动化私钥文件的最佳位置是哪里?

我测试的另一种方法是将私钥存储为存储库的一部分,然后在构建期间将其拉下。这种方法效果很好,但我担心这不是“最佳实践”。

答案1

不确定这是否算作答案,但我让它工作了。我使用 Azure DevOps 中的“安装 SSH 密钥”任务来存储公钥和私钥。您可以将密钥作为字符串粘贴到此任务中,它将安装密钥并使其可供其他服务器使用。

有关更多信息SSH 密钥任务

相关内容