Loading

ubuntu22.04容器安装ssh服务

除了特别说明外,否则以下命令均为ubuntu 22.04 容器内执行!!!

安装

查看ubuntu22.04 有没有安装openssh-server,执行命令:sudo dpkg --list | grep ssh

没有找到openssh-server的包,很显然,没有安装,那么就开始安装,执行:sudo apt install openssh-server

安装完成后,通过上图相关的包已经安装好了。这时,查看ssh服务的状态,执行:service ssh status 或者 ps -ef | grep sshd。 若ssh服务没有运行,就执行命令启动它:service ssh start

注意:这里为什么用service命令,而不用systemctl命令呢? ubuntu 22.04容器没有这个权限

此时,你使用宿主机通过ssh客户端去连接ubuntu 22.04 的ssh server,结果连不上,那就说明还有问题没有解决。ubuntu 22.04 容器是宿主机的一个进程,要与ubuntu 22.04容器通信需要宿主机映射端口给该容器。

由于创建容器时,没有对容器进行端口映射配置,所以需要将当前容器保存为镜像A,然后以镜像A创建新容器并配置端口映射。以下是配置流程:

# 特别说明:以下命令均在宿主机上执行

# 停止指定的容器
docker stop $(container_id)

# 通过指定的容器创建镜像
docker commit $(container_id) $(new_imager_name)

# 查看本地镜像
docker images

# 查看宿主机8112端口是否占用
netstat -ap | grep 8112

# 通过指定的新镜像运行容器,并映射宿主机8112端口到ubuntu 22.04容器22端口
# 映射宿主机的当前运行docker命令的目录到ubuntu 22.04的/workspace目录
# 设置ubuntu 22.04 总是跟随宿主机启动
docker run -itd -p 127.0.0.1:8112:22 --restart=always -v $PWD:/workspace -u 1000 --security-opt seccomp=unconfined ${new_imager_id}

注意:这里映射的是127.0.0.1地址,所以只有宿主机能通过ssh连接上;如果需要其他主机也能通过ssh连接上,需要修改为0.0.0.0

宿主机的防火墙对的IP和Port有限制,所以宿主机需要在防火墙开放8112端口。

# 特别说明:以下命令均在宿主机上执行

# 查看防火墙的状态
sudo ufw status

# 启动防火墙
sudo ufw enable

# 防火墙条件规则,放行8112端口
sudo ufw allow 8112

# 重启防火墙
sudo ufw reload

连接

ssh服务配置好后,可以在宿主机使用ssh客户端去连接,执行命令:ssh cj@localhost -p 8112 或者 ssh cj@127.0.0.1 -p 8112,接着按照提示输入密码。

注意:这里的用户cj是在ubuntu 22.04容器内已经创建好的

参考

# 配置远程连接容器内镜像(映射容器内系统的22端口到宿主机上)

posted @ 2024-08-04 20:28  eiSouthBoy  阅读(1086)  评论(0)    收藏  举报