我刚刚注册了亚马逊的新Elastic Beanstalk产品.我无法弄清楚如何SSH到Beanstalk实例.我没有私钥,因为Beanstalk代表我生成了实例.
如何通过ssh连接到AWS实例?
我有:
去了我的控制台并创建了环境变量:
$ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
$ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
$ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
Run Code Online (Sandbox Code Playgroud)告诉AWS API使用此密钥对并将密钥对保存到文件:
$ ec2-add-keypair ec2-keypair > ec2-keypair.pem
Run Code Online (Sandbox Code Playgroud)使用此密钥对启动AWS Ubuntu 9实例:
$ ec2-run-instances ami-ed46a784 -k ec2-keypair
Run Code Online (Sandbox Code Playgroud)尝试与实例建立ssh连接:
$ ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com
OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22.
debug1: Connection established.
debug1: identity file ec2-keypair.pem type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
debug1: …Run Code Online (Sandbox Code Playgroud)刚开始,我试图在gitlab CI构建之后使用ansible进行部署,但是结果显示“主机无法访问”。
经过一番尝试和错误后,我发现问题是当通过私钥ssh进入我的AWS EC2实例进行部署时,ssh权限被拒绝。
我的.gitlab-ci.yml配置是这样的:
.gitlab-ci.yml
image: ansible/ubuntu14.04-ansible:stable
stages:
- deploy
deploy_web:
stage: deploy
script:
- "echo Ansible"
- "echo Environment: ${ENV}"
- "echo TAG: ${TAG}"
- "echo ${VAULT_PASS} > vault_pass.txt"
- "mkdir sshkey"
- "echo ${SSH_KEY_APP} > ./sshkey/app-key.pem"
- "chmod 600 ./sshkey/app-key.pem"
- "export SSH_KEY_DIR=`pwd`/sshkey"
- "export ANSIBLE_HOST_KEY_CHECKING=False"
- "ssh-keyscan foobar.io >> ~/.ssh/known_hosts"
- "ssh -v -i ./sshkey/app-key.pem ubuntu@foobar.io" // for debugging
- "ansible-playbook -i ${ENV} servers.yml --vault-password-file vault_pass.txt -vvvv --tags=${TAG}"
Run Code Online (Sandbox Code Playgroud)
当gitlab CI构建它时,它基本上会给出以下ssh错误消息:
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014 …Run Code Online (Sandbox Code Playgroud)