Подтвердить что ты не робот

Использование плагина ec2 для создания виртуальной машины в частной подсети VPC

Хотя я написал много шеф-повара, я довольно новичок и для AWS/VPC, и для управления сетевым трафиком (особенно для бастионного хоста).

Используя плагин ec2 для ножа, я хотел бы, чтобы он динамически создавал и загружал виртуальную машину с моей рабочей станции разработчика. VM должна иметь возможность существовать в публичной или частной подсети моего VPC. Я хотел бы сделать все это без использования эластичного IP. Я также хотел бы, чтобы мой хост-бастион был уволен (т.е. Я хотел бы избежать необходимости создавать явные прослушивающие туннели для каждой виртуальной машины на моем бастионном хосте)

Я успешно использовал плагин ec2 для ножа для создания виртуальной машины в старой модели EC2 (например, вне моего VPC). Теперь я пытаюсь создать экземпляр в своем VPC. На командной строке ножа я указываю шлюз, группы безопасности, подсеть и т.д. Создается виртуальная машина, но после этого нож не может ssh.

Здесь моя командная строка ножа:

knife ec2 server create \
    --flavor t1.micro \
    --identity-file <ssh_private_key> \
    --image ami-3fec7956 \
    --security-group-ids sg-9721e1f8 \
    --subnet subnet-e4764d88 \
    --ssh-user ubuntu \
    --server-connect-attribute private_ip_address \
    --ssh-port 22 \
    --ssh-gateway <gateway_public_dns_hostname (route 53)> \
    --tags isVPC=true,os=ubuntu-12.04,subnet_type=public-build-1c \
    --node-name <VM_NAME>

Я подозреваю, что моя проблема связана с конфигурацией моего бастионного хоста. После дня поиска в Интернете я не смог найти конфигурацию, которая работает. Я могу ssh на хост бастиона, и оттуда я могу ssh к вновь созданной виртуальной машине. Я не могу получить нож, чтобы успешно дублировать его с помощью аргумента gateway.

Я играл с /etc/ssh/ssh _config. Вот как он существует сегодня:

    ForwardAgent yes
#ForwardX11 no
#ForwardX11Trusted yes
#RhostsRSAAuthentication no
#RSAAuthentication yes
#PasswordAuthentication no
#HostbasedAuthentication yes
#GSSAPIAuthentication no
#GSSAPIDelegateCredentials no
#GSSAPIKeyExchange no
#GSSAPITrustDNS no
#BatchMode no
   CheckHostIP no
#AddressFamily any
#ConnectTimeout 0
    StrictHostKeyChecking no
    IdentityFile ~/.ssh/identity
#IdentityFile ~/.ssh/id_rsa
#IdentityFile ~/.ssh/id_dsa
#Port 22
#Protocol 2,1
#Cipher 3des
#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
#EscapeChar ~
    Tunnel yes
#TunnelDevice any:any
#PermitLocalCommand no
#VisualHostKey no
#ProxyCommand ssh -q -W %h:%p gateway.example.com
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no
    GatewayPorts yes

Я также установил /home/ubuntu/.ssh/identity в соответствующий закрытый ключ моего нового экземпляра.

UPDATE:

Я заметил следующее в хосте bastion/var/log/auth.log:

May  9 12:15:47 ip-10-0-224-93 sshd[8455]: Invalid user  from <WORKSTATION_IP>
May  9 12:15:47 ip-10-0-224-93 sshd[8455]: input_userauth_request: invalid user  [preauth]
4b9b3361

Ответ 1

Я наконец решил это. При указании моего шлюза мне не было имени пользователя. Первоначально я думал, что аргумент -ssh-user будет использоваться как для шлюза, так и для виртуальной машины, которую я пытаюсь загрузить. Это было неправильно, имя пользователя должно быть указано для обоих.

knife ec2 server create \
    --flavor t1.micro \
    --identity-file <ssh_private_key> \
    --image ami-3fec7956 \
    --security-group-ids sg-9721e1f8 \
    --subnet subnet-e4764d88 \
    --ssh-user ubuntu \
    --server-connect-attribute private_ip_address \
    --ssh-port 22 \
    --ssh-gateway [email protected]<gateway_public_dns_hostname (route 53)> \
    --tags isVPC=true,os=ubuntu-12.04,subnet_type=public-build-1c \
    --node-name <VM_NAME>

Просто строка, содержащая обновление (обратите внимание на ubuntu @спереди):

    --ssh-gateway [email protected]<gateway_public_dns_hostname (route 53)>

Теперь я прошел и заблокировал мой хост бастиона, включая удаление /home/ubuntu/.ssh/identity, поскольку хранение личного ключа на бастионном хосте действительно вызывало меня.

FYI: при настройке хоста бастиона конфигурация sshd "из коробки" будет работать при использовании образа AMI Amazon Linux. Кроме того, некоторые из приведенных выше аргументов являются необязательными, например -ssh-port.