docker开启ssh服务

主要思路:在容器里设置ssh服务开机自启,然后保存为镜像。下次创建容器的时候加上-p 参数,进行22端口映射即可。

实验部分:

使用vmware进行实验,博主使用docker pull centos,拉取了centos镜像。

创建一个centos7的容器, 指令:docker run -it  --name 自定义容器名 镜像名

docker run -it  --name my_ssh1 b5b4d78bc90c

成功进入容器:

安装ssh服务 

yum install -y openssh-server

修改密码

passwd root

然后会提示你输入新密码 (两次)

 

打开ssh服务

/usr/sbin/sshd -D &

&表示在后台运行,然后结果如下图,表示成功运行

如果报错,则需要ssh公钥私钥对

ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

创建一个脚本文件,在文件里写入启动ssh的指令,设置开机自启即可

vi /run.sh

输入以下内容

#!/bin/bash
/usr/sbin/sshd -D

设置文件权限

chmod +x run.sh

配置完以上内容, 使用exit退出容器,使用docker ps -a 查看容器

使用commit提交修改内容,docker commit 容器ID 镜像:tag

 docker commit 55b84552304f my_ssh:v2

回车,使用docker images 查看镜像

这就是我们刚刚提交的镜像

以该镜像为模板,生成容器,并设置端口映射

docker run -id --name ssh_test1 -p 2233:22 3556c32869fa /run.sh

后面的/run.sh 是使用CMD指令,在启动容器时,会执行改CMD内容,意思就是开机的时候,启动run.sh脚本(我们在上面设置的开启ssh服务的脚本)

接下来进行测试 

账号密码为我们在上一个容器设置的内容。

个人理解

使用docker的好处,比如有一个服务器,需要给多个人分配账号使用,单纯使用adduser指令进行帐户分配,是没有root的,就算有,使用了root会影响到其他帐户的内容,导致环境污染。

使用docker,我们可以多创建几个容器,映射几个端口给他人使用,每个人都是单独的root,随便怎么玩,不会污染环境。

 

以上观点,有说的不对的地方,欢迎指正。

 

更新

使用SSH 遇到环境变量无效的问题,在 /etc/profile中添加以下代码即可:

for item in `cat /proc/1/environ |tr '\0' '\n'`
do
 export $item
done

 

出现 Missing privilege separation directory: /var/run/sshd 则执行:

mkdir -p /var/run/sshd

在ssh连接的时候如果出现拒绝连接,

修改vi /etc/ssh/sshd_config,

修改UsePAM no ,

PermitRootLogin yes 重新启动即可

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值