如何 read/write SSH 私钥 (id_rsa)

How to read/write SSH Private key (id_rsa)

作为自动化 Cloud Init 设置的一部分,我为用户自动生成 public/private 密钥,从文件中读取它们,然后将它们保存在 bash 变量中,就像这样

public_key=$(cat /path/to/id_rsa.pub)
private_key=$(cat /path/to/id_rsa)

然后我像这样通过Cloud Init将它们写入目标机器

- sudo -H -u aryan bash -c 'echo "$public_key" > ~/.ssh/id_rsa.pub'
- sudo -H -u aryan bash -c 'echo "$private_key" > ~/.ssh/id_rsa'

public密钥写对了,但是私钥写成单行然后SSH报错格式错误。我期待这个

-----BEGIN RSA PRIVATE KEY-----                                                                 
 MIICXAIBAAKBgQCpOipW5Xyjc9jLE6AX/0HktpZtyokJap9k5njJl3uw7VpcUITW               
 3UzHHZor4b4N1x8wp17Y0udPsrcPtfJR+pVSr0s6ZMkjX0B7J5jE64iPlVOkO+ww               
 b4CMlonViWeTJ/+gSLkfC2EDfSqPTEOWx44Vs7Mt2qi5Rvq/Po81NDrK2QIDAQAB               
 AoGAcklZ9r2dYzYFn4BtikdVVQUKqrMxwS5E33vW7y5i1qY1dErcq89g3shbKm+W               
 TvqNkeo23+/vT5++idmzATJeTQ+uhRidPrU6XTWd4I8LvHB6dYIGKpGuciv4NWG0               
 3CLDt5IRLpAJ8qAl3tmitWadZw7lJtGAWg+7zdbIoP07XhECQQD32vBAwePlB/ZY               
 CsRNeIDUWtAGaxqBvssmbh4wfCYZDH+3BJbyMG0AWycE0YLZLlACKzTUu5PC8CKu               
 zQBKb02LAkEArsnGdJ7ipDTZZWl1Q42M494SfQUA9+he12WU6O2o2BJqr8cVRG2V               
 BJHHXvdHB+xWRMpo0vxTiGdDIDqPwfPdqwJBAMBpkgvjuYSqur48lYpC21h/q3Dg               
 IrLIqDMMV5lyN61Ie7lb8cbQez5EhTUDZN4vSuN0IU5o1FwIShSDhw9B+uMCQFwN               
 UiJLJ0uZtcCOCL76BnBfnVcQUpE9ZO2FxyXhPGIHWP6YF6BBIhEVAW4HRvZqRojW               
 HNy5HPkigRyxGtLnrx8CQFWZtrGiBIrYRsrf9fwXv4DTB5z7sQLEf8x2dwvif34O               
 +bYMoDJPewr3ti88KJP4rubmIS9PTCAJxEfMBPkZHvE=                                   
 -----END RSA PRIVATE KEY-----

但是我有这个(截断的)

-----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQCpOipW5Xyjc9jLE6AX/0HktpZtyokJ...

问题:如何将私钥正确读入变量,然后写入文本文件

注意: 最简单的方法是简单地复制文件,但我认为 Cloudinit 不支持 cp/scp。如果是,请告诉我怎么做

您需要引用您的命令替换以保留换行符:

private_key="$(cat /path/to/id_rsa)"