17

私はかなりの量のシェフを書いてきましたが、AWS/VPC とネットワーク トラフィックの管理 (特に踏み台ホスト) の両方にかなり慣れていません。

knife ec2 プラグインを使用して、開発者ワークステーションから VM を動的に作成およびブートストラップする機能が必要です。VM は、VPC のパブリックまたはプライベート サブネットに存在できる必要があります。エラスティック IP を使用せずに、これらすべてを実行したいと考えています。また、踏み台ホストをハンドオフしたいと考えています (つまり、踏み台ホストで VM ごとのリッスン トンネルを明示的に作成する必要がないようにしたいと考えています)。

ナイフ ec2 プラグインを使用して、レガシー EC2 モデル (たとえば、VPC の外部) で VM を作成することに成功しました。現在、VPC でインスタンスを作成しようとしています。ナイフのコマンド ラインで、ゲートウェイ、セキュリティ グループ、サブネットなどを指定しています。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 で接続でき、そこから新しく作成された VM に SSH で接続できます。ゲートウェイ引数を使用してナイフでこれを正常に複製することはできません。

/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]
4

1 に答える 1

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 など、上記の引数の一部はオプションです。

于 2013-05-09T13:28:07.047 に答える