为了减少潜在的安全风险,ContainerOS原则上不支持任何用户直接登录到系统进行一系列可能无法追溯的操作,也不提供SSH登录功能。若您仍然有登录实例进行运维操作的需求,ContainerOS提供了专用的运维容器以满足您问题排查、软件包安装等非日常的运维需求。本文介绍ContainerOS支持的常见运维容器操作,包括登录、启动、停止、重启、状态查询等。
相较于主机环境,运维容器拥有更多的软件包,也支持通过包管理软件YUM安装需要的软件包。在运维容器中,您可以查看系统进程信息、网络信息、系统配置等。此外,运维容器里还提供了专用的命令,用于从容器中进入主机,效果等同于直接通过Workbench来登录实例。
前提条件
实例或集群的登录类型为密钥对。运维容器仅支持密钥登录,这需要您在创建实例或集群时,选择登录凭证为密钥对。若创建时未选择密钥对登录,可以在实例创建完成后,为实例绑定一对密钥。关于绑定密钥的具体操作,请参见绑定SSH密钥对。
已安装ECS云助手客户端。管理运维容器需要通过ECS云助手调用专用的API工具来实现,关于ECS云助手的安装和使用方法,请参见安装云助手Agent和云助手概述。
安全组已开放22端口,否则无法通过Workbench正常登录。关于开放安全组端口的具体操作,请参见安全组概述。
使用免密登录模式进行ECS实例操作。
进入主机环境
在ECS云助手,执行以下命令,启动运维容器。
sudo lifseacli container start
预期输出:
预期输出表明,通过云助手成功启动了运维容器。
执行以下命令,在支持SSH命令的终端中,通过指定的私钥登录到运维容器。
说明将
<ssh-private-key.pem>
替换为您绑定到实例的密钥对中的私钥;<instance-ip>
替换为实例IP。您也可以使用admin通过Workbench直接登录,密钥为您绑定到实例的密钥对中的私钥。请确保您的实例已开放22端口。
ssh -i <ssh-private-key.pem> admin@<instance-ip>
成功登录运维容器的界面如下所示。主机的根文件系统已被挂载到运维容器的
/.lifsea/rootfs
目录(只读挂载),供您查找所需的系统信息、配置等。执行以下命令,从运维容器登录到主机环境中。
sudo superman
执行
ls
命令,查询可使用的系统命令。预期输出:
在主机环境中,可用的系统命令有限。
其他操作
进入主机环境后,执行exit
命令可退出主机环境,再次执行exit
命令可退出运维容器。此时,运维容器仍然存在并处于运行状态,您可再次通过SSH登入,或者通过命令停止、重启、销毁运维容器。
停止运维容器
sudo lifseacli container stop
重启运维容器
若您在启动运维容器之后,重新绑定或解绑了密钥对,则需要重启运维容器,否则绑定或解绑密钥对无法生效。
sudo lifseacli container restart
销毁运维容器
sudo lifseacli container rm
销毁运维容器之后,您此前在容器中安装的软件、保存的文件也会随之一并销毁。若您重新启动一个运维容器,便是一个全新的环境,请尽量不要在运维容器中保存关键数据。
查询运维容器状态
sudo lifseacli container status
常见问题
登录出错,提示UNPROTECTED PRIVATE KEY FILE!
错误怎么办?
问题现象
报错如下图所示。
问题原因
私钥文件的权限太大。
解决方案
执行chmod 400 <ssh-private-key.pem>
命令,将私钥文件的权限修改为400。其中,<ssh-private-key.pem>
需要替换为您的私钥文件名。