虽然我已经写了相当数量的厨师,但我对AWS / VPC和管理网络流量(尤其是堡垒主机)都很陌生。
使用刀ec2插件,我希望能够从我的开发人员工作站动态创建和引导VM。 VM应该能够存在于我的VPC的公共或私有子网中。我想在不使用弹性IP的情况下完成所有这些工作。我还希望我的堡垒主机可以放手(即我希望避免在我的堡垒主机上创建明确的每个VM监听隧道)
我已成功使用刀ec2插件在传统EC2模型中创建VM(例如,在我的VPC之外)。我现在正在尝试在我的VPC中创建一个实例。在knife命令行中,我指定了一个网关,安全组,子网等。创建了VM,但是之后刀无法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到新创建的VM。我无法使用网关参数成功复制它。
我玩过/ 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,umac-64@openssh.com,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设置为我新实例的匹配私钥。
更新:
我在堡垒主机的/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]
答案 0 :(得分:15)
我终于解决了这个问题。在指定我的网关时,我错过了用户名。我原本以为--ssh-user参数将用于网关和我试图引导的VM。这是不正确的,必须为两者指定用户名。
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 ubuntu@<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 ubuntu@<gateway_public_dns_hostname (route 53)>
我现在已经通过并锁定我的堡垒主机,包括删除/home/ubuntu/.ssh/identity,因为在堡垒主机上存储私钥真的很烦我。
仅供参考:在设置堡垒主机时,使用Amazon Linux AMI映像时,sshd的“开箱即用”配置将起作用。此外,上面的一些参数是可选的,例如--ssh-port。