Il coltello non può ssh nel server EC2 appena istituito

Ho appena creato un nuovo ambiente chef, mentre sto attualmente espandendo la mia conoscenza dello Chef. Ho un paio chiave fondato su EC2, ho impostato la mia configuration del coltello. Quando tento di spawn un server, il nodo viene creato ma il coltello non può ssh in esso.

Ecco il mio knife.rb (che è al di fuori del repo):

  • VTL con AWS S3 in Veeam
  • Che cosa sono le chiavi dentro / etc / ssh / utilizzato?
  • Server MySql intensivo di I / O su Amazon AWS
  • Come recuperare da "Troppe errori di authentication per root utente"
  • Monitorare ssh sulla port non predefinita con Nagios
  • Disabilitare chmod in openssh-server
  •  current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name "mynode" client_key "/Users/me/.chef/my.pem" validation_client_name "my-validator" validation_key "/Users/me/.chef/my-validator.pem" chef_server_url "https://api.opscode.com/organizations/myorg" cache_type 'BasicFile' cache_options( :path => "/Users/me/.chef/checksums" ) cookbook_path ["/Users/me/git/chef/cookbooks"] knife[:aws_access_key_id] = "yadayadyada" knife[:aws_secret_access_key] = "blahblahblah" knife[:identity_file] = "/Users/me/.ssh/knife.pem" knife[:aws_ssh_key_id] = "knife" 

    Ecco il mio command coltello:

     knife ec2 server create -r "role[whatever]" -I ami-09470539 --subnet subnet-03e44866 -f t2.micro --ssh-user ubuntu --region us-west-2 -Z us-west-2a 

    Ho anche provato specificando direttamente il pem :

     knife ec2 server create -r "role[whatever]" -I ami-09470539 --subnet subnet-03e44866 -f t2.micro -S knife -i ~/.ssh/knife.pem --ssh-user ubuntu --region us-west-2 -Z us-west-2a 

    Questa è un'istanza HVM all'interno di un gruppo VPC.

    Quello che ho provato e controllato …

    1. Sì, il pem ha le giuste autorizzazioni (400).
    2. Sì, il gruppo di protezione EC2 ("predefinito") è accessibile a livello internazionale nella port 22.
    3. Sì, posso ssh dentro direttamente utilizzando il tasto knife.pem sulla row di command.
    4. Sì, ho introdotto questo esaustivo e ho letto tre diversi tutorial. Mi sembra di aver fatto tutto bene.

    C'è qualcos'altro che mi manca?

    In modo verboso, questo è quello che sto vedendo …

     Waiting for sshd .DEBUG: ssh timed out: 172.nnn.nnn.nnn .DEBUG: ssh timed out: 172.nnn.nnn.nnn 

    4 Solutions collect form web for “Il coltello non può ssh nel server EC2 appena istituito”

    Mi sono imbattuto in questo problema esatto quando ho iniziato a preparare lo chef su EC2. Ecco il command che utilizziamo per lanciare correttamente le istanze EC2 con knife :

     knife ec2 server create \ --flavor m3.medium \ --image ami-****** \ --iam-profile "iam-app" \ --ebs-size 30 \ --security-group-ids sg-**** \ --subnet subnet-6de**** \ --ssh-key my-key-name \ --ssh-user ubuntu \ --ssh-port 22 \ --identity-file "/local/path/to/ssh/key/for/this/instance" \ --ssh-gateway ubuntu@our.bastion.host \ #remove this line if you're not connecting through a bastion host --server-connect-attribute private_ip_address \ # Because we connect through a bastion host we want to explicitly connect to the the private IP address. You may want to set this to the public IP address. I believe these are fog attributes. --node-name "test-play-1" \ --tags Name="test-play-1",Environment="Test" \ --run-list "role[app]" \ --environment test 

    Si noti che è la migliore pratica di utilizzare un host Bastion per connettersi alle istanze rispetto alla connessione ad each istanza EC2. Inoltre, per i server rivolti al pubblico, utilizziamo una row come questa per assegnare esplicitamente l'indirizzo IP Elastico:

     --associate-eip 54.186.***.*** 

    Volevo solo aggiungere quello che ha funzionato per noi senza un bastion host poiché ha preso un sacco di sperimentazione:

     knife ec2 server create --image ami-xxxxx \ --flavor t2.medium \ --run-list 'recipe[recipe-name]' \ --security-group-id sg-xxxxx \ --region us-east-1 \ --node-name $1 -T Name=$1 \ --subnet subnet-xxxxx \ --ssh-user ubuntu \ --ssh-key key_name \ --identity-file "~/.ssh/key_file_name" \ --server-connect-attribute dns_name \ --associate-eip $2 \ --associate-public-ip \ --no-host-key-verify 

    where il primo parametro è il nome dell'istanza e il secondo parametro è l'IP elastico pubblico.

    Saluti!

    Beh, naturalmente, appena mi allontanai dal computer, ho capito che cosa è la questione …

    knife sta cercando di ssh nell'uso del IP privato . D'oh!

    Posso solo supporre che – --associate-public-ip lo risolverà. Sono lontano dal computer e testerò più tardi. Sentitevi liberi di confermare / negare / offrire consigli.

    Dal momento che sto collegando IP pubblico e questo --server-connect-attribute public_ip_address funziona per me.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.