您可以为一个实例创建不止一对密钥,您也可以将一对密钥放在同一Project下的多个服务器中。如果您的密钥对是用外部工具创建的,您还可以将其导入进OpenStack。

    如果某个镜像是用固定的root密码,或一个静态的密钥来做认证的,您就不能在启动这个实例时创建密钥对了。

    “安全组”是一组网络规则,它能限制对实例的网络访问类型。当您启动实例时,您可以为其设置一个或多个安全组。如果您没有创建安全组,新的实例会被自动分配默认的安全组,除非您另外指定别的组了。

    您可以在安全组中设置允许连接实例的哪些端口(或者是通过哪些协议来连接)。例如,您可以修改规则,允许外部通过SSH来连接服务器,Ping这个服务器,或者允许UDP连接(比如DNS之类的服务)。具体说来,您可以指定规则中的如下参数:

    如果您修改了规则,这些规则即刻生效。

    添加一对密钥

    您可以生成一对密钥,也可以将已经生成的公钥上传进OpenStack

    1. 如果想生成一对密钥,请使用如下命令:
    1. $ nova keypair-add KEY_NAME > MY_KEY.pem
    1. 运行如下命令,保证只有您能读写这个文件的内容:
    1. $ chmod 600 MY_KEY.pem

    导入一对密钥

    1. 如果您已经创建了一对密钥了,假如您的公钥存放在~/.ssh/id_rsa.pub,您可以运行如下命令来上传公钥。

    这条命令会将您的公钥注册在Nova数据库中,保存的名称是您指定的,此处是KEY_NAME。

    1. 为了确认您的密钥已经成功导入,用下面的命令列出所有的密钥对:
    1. $ nova keypair-list

    创建和管理安全组

    1. 如果要列出当前Project所有的安全组,包括描述,请使用以下命令:
    1. $ nova secgroup-list
    1. 如果要创建一个安全组,请使用如下命令(该命令同时会为安全组命名,还会添加描述):
    1. 如果要删除某个安全组,请使用如下命令:
    1. $ nova secgroup-delete SECURITY_GROUP_NAME

    创建和管理安全组规则

    nova secgroup-*-rule命令专门用来修改用户组规则。在您开始修改这些规则前,请先载入OpenStack RC 文件。详情请参阅Set environment variables using the OpenStack RC file。

    1. 1. 如果您要列出安全组下地所有规则,请执行以下命令:
    2. $ nova secgroup-list-rules SECURITY_GROUP_NAME
    3. ```
    4. 2. 如果要允许本机的SSH,从以下两个命令中选择一个:
    5. ```
    6. $ nova secgroup-add-rule SECURITY_GROUP_NAME tcp 22 22 0.0.0.0/0
    7. ```
    8. - 只允许别的安全组内的IP来访问特定端口:
    9. ```
    10. $ nova secgroup-add-group-rule --ip_proto tcp --from_port 22 \
    11. --to_port 22 SECURITY_GROUP_NAME SOURCE_GROUP_NAME
    12. ```
    13. 3. 如果要允许实例接受ping,从以下两个命令中任选一个:
    14. - 允许从任意地址发来的ping,用CIDR格式写明0.0.0.0/0IP和子网。
    15. ```
    16. ```
    17. 这条命令将打开所有ICMP流量的所有编码和种类。
    18. ```
    19. $ nova secgroup-add-group-rule --ip_proto icmp --from_port -1 \
    20. --to_port -1 SECURITY_GROUP_NAME SOURCE_GROUP_NAME
    21. ```
    22. 4. 如果要允许UDP通信,比如需要在虚拟机上搭建DNS的时候,请从下面两个命令中任选一个:
    23. - 允许从任意地址发来的UDP通信,用CIDR格式写明0.0.0.0/0IP和子网。
    24. ```
    25. $ nova secgroup-add-rule SECURITY_GROUP_NAME udp 53 53 0.0.0.0/0
    26. ```
    27. - 只允许别的安全组内的IP来访问特定端口:
    28. ```
    29. $ nova secgroup-add-group-rule --ip_proto udp --from_port 53 \
    30. ```

    删除用户组规则

    如果要删除安全组规则,您要在删除指令后面写明您创建这个规则时添加的参数。