作为自动化CloudInit设置的一部分,我会自动为用户生成公钥/私钥,从文件中阅读它们,然后将它们保存在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'
公钥写得正确,但是私钥写在一行中,然后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。如果支持,请告诉我如何操作
2条答案
按热度按时间txu3uszq1#
您需要将 command substitution 引起来以保留换行符:
wfveoks02#
对于cloud-init ssh设置,你可以在部署之前生成私钥和公钥,然后使用cloud-init用这些ssh密钥部署服务器。这样,你的计算机上将总是有相同的私钥,并且能够ssh到新的服务器。如果错误的人访问cloud-config文件,也可能是一个安全问题
样本代码: