Thursday, May 18, 2017

AWS EC2和VPC简介

SSH连接EC2步骤:

1. 下载ppk文件(私钥文件)
2. 用PuTTYgen转化成Putty能读的私钥文件my-key-pair
3. 用PuTTY输入用户名ubuntu@DNS,SSH->Auth引入步骤2产生的文件作为密码。不同的EC2可以share同一个key,但用putty登录时同样要SSH->Auth引入步骤2产生的文件作为密码。
更多

模板

用现有instance模板产生更多此类实例(比如已经安装了很多软件)
1. 在“实例”页面上,选择要使用的实例。
2. 选择 Actions,然后选择 Launch More Like This。
更多
或者创建一个实例模板AMI(amazon machine image)
1. 在“实例”页面上,选择要使用的实例。
2. 选择 Actions,然后选择 Images->Create image。
这样创建实例时候可以从my AMIs中创建
更多


terminate vs stop

区别在于stop只是关机,硬盘(EBS)还在,terminate就是整个instance都会被删掉

界面GUI

1. 安装
sudo -s
sudo apt-get update
sudo apt-get install ubuntu-desktop
sudo apt-get install vnc4server
sudo apt-get install gnome-panel

2. 初始化进程
vncserver
vncserver -kill :1

3. 修改config
vi .vnc/xstartup
删掉第一行注释:
unset SESSION_MANAGER
加入
gnome-session -session=gnome-classic &
gnome-panel&

4. 开始进程
vncserver

5. 打开5901端口
在security groups中的inbound规则加入5901端口,而source为0.0.0.0/0。有一点要特别注意的是,一定要在该instance对应的security group加入端口,若不在正确的security group上加,就不能被访问。

6. TightVPC
连接publicIP::5901

https://www.youtube.com/watch?v=ljvgwmJCUjw (最好的指南)
http://stackoverflow.com/questions/25657596/how-to-set-up-gui-on-amazon-ec2-ubuntu-server

VPC:

如果EC2只是内部资源,不需要暴露在public(如非网站)。如果给ec2一个public IP,这样很容易被攻击,所以可以只给ec2内部IP,确保它在VPC内部,然后加入带public IP的bastion host作为进入VPC的入口。

bastion host: public IP, sg1->只允许公司内部IP的端口22的访问(不要开放给所有IP)
vm01:, private IP, sg2->只允许sg1的端口22的访问,且outbound允许所有IP的80和443端口流出

Putty只要登录bastion host,登陆后再ssh 到vm01。至于bastion host的设置在SSH->Auth中要勾上Allow agent forwarding并且留空Private key file for authentication,并且开着Pageant(windows service),把key放入即可(原理是把key放入内存中). 参见教程


















在private的EC2默认不能访问Internet,所以可以在VPC中的Elastic IPs创建一个分配给该EC2。private的EC2默认没有outbound rule,与public的EC2默认允许All trafic, all ports完全不同。所以对每种服务都要加入到outbound,如EC2要读写RDS,就要允许通过3306访问RDS的security group。

如下表,ec2的outbound和mysql的inbound对接起来,这样ec2就可以顺利访问RDS

security group Inbound Outbound IsPublic
bastion SSH:devIP ALL Yes
ec2 SSH:bastion HTTP(s):ALL
MySql:mysql
no
mysql MySql:ec2
MySql:devIP
ALL yes

1 comment: