Включить SSH с паролем вместо ключа Pem - PullRequest
0 голосов
/ 25 апреля 2018

Я запускаю экземпляр EC2 с использованием облачной информации.Я хочу включить SSH с паролем вместо ключа pem для этого экземпляра.Я могу написать скрипт запуска (пользовательские данные) для этого, но я установил статический пароль 'pass123' для пользователя 'student'.Я хочу сделать это динамическим (случайным).На самом деле, мы были бы рады чему угодно, кроме аутентификации сертификата клиента SSH.

Вот мой шаблон облачной информации:

{
   "AWSTemplateFormatVersion":"2010-09-09",
   "Description":"Password for instance",
   "Parameters":{
      "KeyName":{
         "Description":"Name of an existing EC2 KeyPair",
         "Type":"String"
      },
      "AWSAmiId":{
         "Description":"AMI Id to find",
         "Type":"String",
         "Default":"x86_64,amzn-ami-pv-2014.09.1.x86_64-ebs,amazon,ebs,paravirtual"
      }
   },
   "Resources":{
      "Ec2Instance":{
         "Type":"AWS::EC2::Instance",
         "DependsOn":"Ec2SecurityGroup",
         "Properties":{
            "ImageId":{
               "Ref":"AWSAmiId"
            },
            "InstanceType":"t1.micro",
            "Tags":[
               {
                  "Key":"Name",
                  "Value":"MYINSTANCE"
               }
            ],
            "DisableApiTermination":"true",
            "SecurityGroupIds":[
               {
                  "Ref":"Ec2SecurityGroup"
               }
            ],
            "KeyName":{
               "Ref":"KeyName"
            },
            "UserData":{
               "Fn::Base64":{
                  "Fn::Join":[
                     "\n",
                     [
                        "#!",
                        "useradd student\n",
                        "echo pass123 | passwd student --stdin\n",
                        "echo \"student ALL=(ALL) NOPASSWD: ALL\" | tee -a /etc/sudoers\n",
                        "mkdir /home/student/.ssh\n",
                        "cp cp ~ec2-user/.ssh/authorized_keys ~student/.ssh/authorized_keys\n",
                        "sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config\n",
                        "service sshd reload\n"
                     ]
                  ]
               }
            }
         }
      },
      "Ec2SecurityGroup":{
         "Type":"AWS::EC2::SecurityGroup",
         "Properties":{
            "GroupDescription":"VPC Security Group",
            "SecurityGroupIngress":[
               {
                  "CidrIp":"0.0.0.0/0",
                  "FromPort":"22",
                  "IpProtocol":"tcp",
                  "ToPort":"22"
               }
            ]
         }
      }
   },
   "Outputs":{
      "Password":{
         "Description":"newly created EC2 instance",
         "Value":"pass123"
      }
   }
}

Пароль может быть:

  • Имя файла ключа SSH

  • Идентификатор учетной записи AMZN (например, 45678923)

  • Случайная строка (poiblkjfda)

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Существует несколько вариантов для возврата случайного пароля:

  • Вы можете сгенерировать его до для вызова CloudFormation.То есть, что бы ни запускал CloudFormation, он мог генерировать пароль и передавать его в стек в качестве параметра.Затем вы можете показать параметр как выход.
  • Вы можете вернуть значение как часть CloudFormation WaitCondition , а затем отобразить результат как выход.
  • Вы можетесгенерируйте пароль в настраиваемых лямбда-ресурсах AWS , которые затем можно будет вставить в пользовательские данные и предоставить в качестве вывода.
  • Вы можете настроить пользовательские данные для храненияпароль в AWS Secrets Manager , который более безопасен, чем вывод его в виде стека.Затем пользователь сам получит пароль.

Только первый из них прост.Остальное включает некоторую конфигурацию / кодирование.

0 голосов
/ 26 апреля 2018

Если вы хотите создать случайную строку в качестве пароля, вы можете использовать / dev / urandom .Для строки из 10 символов

head /dev/urandom | tr -dc A-Za-z0-9 | head -c 10 ; echo ''

Вы можете включить это в свои пользовательские данные вместо статической парольной фразы.

...