2013-05-08 17 views
17

Mimo, że napisałem sporą ilość szefów kuchni, jestem całkiem nowy zarówno dla AWS/VPC, jak i administrowania ruchem sieciowym (szczególnie hosta bastionu).Używanie wtyczki nóż ec2 do tworzenia maszyny wirtualnej w prywatnej podsieci VPC

Używając wtyczki noża ec2, chciałbym móc dynamicznie tworzyć i ładować maszynę wirtualną z mojej stacji roboczej programisty. Maszyna wirtualna powinna istnieć w publicznej lub prywatnej podsieci mojej VPC. Chciałbym zrobić to wszystko bez użycia elastycznego adresu IP. Chciałbym także, aby mój host z bastionem był bezstronny (tj. Chciałbym uniknąć tworzenia jawnych tuneli odsłuchowych VM na moim hostelu).

Udało mi się użyć wtyczki nóż ec2 do utworzenia maszyny wirtualnej w dotychczasowy model EC2 (np. poza moją VPC). Teraz próbuję utworzyć instancję w mojej VPC. W wierszu poleceń noża określam bramkę, grupy zabezpieczeń, podsieć itd. Maszyna wirtualna zostanie utworzona, ale nóż nie przejdzie do niej później.

Oto mój wiersz poleceń nóż:

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> 

Podejrzewam, że mój problem wiąże się z konfiguracją mojego hosta bastion. Po dniu szukania w Google nie mogłem znaleźć konfiguracji, która działa. Mogę ssh do hosta bastionu, a stamtąd mogę ssh do nowo utworzonej maszyny wirtualnej. Nie mogę uzyskać noża, aby pomyślnie powielić to za pomocą argumentu bramy.

Grałem z/etc/ssh/ssh_config. Oto jak to istnieje dzisiaj:

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 

Mam również ustawić /home/ubuntu/.ssh/identity do pasującego klucza prywatnego mojej nowej instancji.

UPDATE:

zauważam następujące w /var/log/auth.log gospodarza Bastion za:

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] 

Odpowiedz

15

I wreszcie rozwiązany to. Brakuje nazwy użytkownika podczas określania mojej bramy. Początkowo myślałem, że argument --ssh-user zostanie użyty zarówno dla bramy, jak i maszyny wirtualnej, którą próbuję uruchomić. Było to niepoprawne, należy podać nazwę użytkownika dla obu.

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> 

Tylko wiersz zawierający aktualizację (zauważyć ubuntu @ w przód):

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

Mam teraz przeszedł i zablokowanego mojego gospodarza bastion z powrotem w dół, w tym usuwania/home/ubuntu/.ssh/identity, ponieważ przechowywanie klucza prywatnego na hoście bastionu naprawdę mnie niepokoiło.

FYI: Podczas konfigurowania hosta bastionu, konfiguracja sshd "out of the box" będzie działała podczas korzystania z obrazu AMI Amazon Linux. Ponadto niektóre z powyższych argumentów są opcjonalne, na przykład --ssh-port.

+0

Występuję z podobnym problemem. Dodanie opcji --ssh-gateway pomaga, ale nadal nie udało mi się nawiązać połączenia z moim kluczem publicznym. Wciąż otrzymuję 'Wprowadź hasło dla '. Zastanawiam się tylko, czy doświadczyłeś tego również, gdy pracowałeś nad tym. – jmreicha

+0

Po aktualizacji, było kilka rzeczy, które musiałem naprawić. Po pierwsze, nie użyłem poprawnego pliku identitfy, więc SSH domyślnie używał nazwy użytkownika/hasła. Inną rzeczą jest to, że muszę włączyć przekazywanie, które nie było domyślnie (Ubuntu). – jmreicha

Powiązane problemy