Dav*_*ave 1 ssh ssh-keys amazon-web-services cloud-init
我正在尝试使用 cloudformation 模板中的 cloud-init 在启动时使用已知的 SSH 主机密钥配置 EC2。但是现在我无法通过 SSH 连接到服务器。调试很棘手:-)
这是我的模板中 EC2 片段的 userdata 部分:
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#cloud-config", "\n",
"ssh_keys:", "\n",
"- rsa_private: |", "\n",
" -----BEGIN RSA PRIVATE KEY-----", "\n",
" MIIEowCBAAKCAQF71D8K9C/+K0a2fO+S9s441kSI44lF5ml++ewD+Mp115x9", "\n",
" /XwwTlvqxCIpxdzpzq4xXEqH48StHyYIjAOPxoS1/QG0Ti6OqU893PpukLdmV", "\n",
" kLZKn2ph4fTT2aMl...", "\n",
" -----END RSA PRIVATE KEY-----", "\n",
"rsa_public: ssh-rsa AAAAB...", "\n",
Run Code Online (Sandbox Code Playgroud)
根据文档,我也有 (ec)dsa_public/private 的条目。
cloudinit 是否有一些奇怪之处,我还必须指定 ssh_authorized_keys ?我假设我的密钥对的公钥现在没有被亚马逊推送到我的 EC2 上......
小智 5
您问题中的 UserData 基本上是一个在您的实例首次启动时运行的 shell 脚本。有关更多详细信息,请参阅UserData 上的文档。
如果你想配置一组公共密钥,您可以使用AWS :: CloudFormation ::初始化代替。
在文件部分,声明authorized_keys 文件:
"files" : {
"/home/ec2-user/.ssh/authorized_keys" : {
"content" : { "Fn::Join" : ["", [
{ "Fn::FindInMap" : [ "Admins", "userx", "sshPublicKey"] }, "\n",
{ "Fn::FindInMap" : [ "Admins", "usery", "sshPublicKey"] }, "\n"
]] },
"mode" : "000600",
"owner" : "ec2-user",
"group" : "ec2-user"
}
...
Run Code Online (Sandbox Code Playgroud)
本示例中的用户数据来自cloudformation 模板的Mappings 部分:
"Admins" : {
"userx" : { "sshPublicKey" : "ssh-rsa AAAABxxxxx...xxxxBSES/H userx" },
"usery" : { "sshPublicKey" : "ssh-rsa AAAABxxxxx...xxxxKM+aSe usery" }
}
Run Code Online (Sandbox Code Playgroud)
请首先使用不同的文件名而不是authorized_keys来测试它,因为当您犯最轻微的错误时,您确实会被锁定在您的实例之外。
归档时间: |
|
查看次数: |
4370 次 |
最近记录: |