Ssh
Knife 無法 ssh 進入新實例化的 EC2 伺服器
我剛剛建立了一個新的 Chef 環境,因為我目前正在擴展我對 Chef 的了解。我在 EC2 上設置了密鑰對,我設置了 Knife 配置。當我嘗試生成伺服器時,會創建節點,但 Knife 無法 ssh 進入它。
這是我的
knife.rb
(在回購之外):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"
這是我的刀命令:
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
我也通過
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
這是 VPC 組內的 HVM 實例。
我已經嘗試和檢查過…
- 是的,
pem
具有正確的權限(400)。- 是的,EC2 安全組(“預設”)可在埠 22 上進行全球訪問。
knife.pem
是的,我可以使用命令行上的密鑰直接 ssh 進入它。- 是的,我已經用Google搜尋了這個並閱讀了三個不同的教程。我似乎做的一切都是正確的。
還有什麼我想念的嗎?
在詳細模式下,這就是我所看到的……
Waiting for sshd .DEBUG: ssh timed out: 172.nnn.nnn.nnn .DEBUG: ssh timed out: 172.nnn.nnn.nnn
當我第一次在 EC2 上設置 chef 時,我遇到了這個確切的問題。這是我們用來
knife
成功啟動 EC2 實例的命令: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
請注意,最佳實踐是使用堡壘主機連接到您的實例,而不是直接連接到每個 EC2 實例。此外,對於面向公眾的伺服器,我們使用這樣的行來顯式分配彈性 IP 地址:
--associate-eip 54.186.***.***