我这里使用的ubantu14.04为的镜像
创建容器并跑
docker run -it ubuntu:14.04 /bin/bash
更新apt缓存,并安装openssh-server:
root@fc1936ea8ceb:/# apt-get update; apt-get install openssh-server -y
选择主流的openssh-server作为服务端:
root@fc1936ea8ceb:/# apt-get install openssh-server –y
如果需要正常启动SSH服务,则目录/ var/run/sshd必须存在。手动创建
它,并启动SSH服务:
root@fc1936ea8ceb:/# mkdir -p /var/run/sshd
root@fc1936ea8ceb:/# /usr/sbin/sshd -D & [1] 3254
这时我们来查看一下,可见此端口已经处于监听状态:
root@。。。。:/# netstat -tunlp
修改SSH服务的安全登录配置,取消pam登录限制:
ps.pam是一种登录限制方式(这里还是不太理解pam的作用)
root@。。。。:/# sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
在root用户目录下创建.ssh目录,并复制需要登录的公钥信息(一般为本
地主机用户目录下的.ssh/ id_rsa.pub文件,可由ssh-keygen-t rsa命令生成,一般为本地主机用户目录下的.ssh/id_rsa.pub文件,可由ssh-keygen -t rsa命令生成,
在远端客户端机器(即,非容器机器)执行命令 ssh-keygen -t rsa 生成rsa的公私密钥对,然后把公钥的信息拷贝到运行ubuntu容器机器的授权文件中:)到authorized_keys文件中:
本地机输入
ssh-keygen -t rsa
公匙
创建目录
root@。。。:/# mkdir root/.ssh
打开,并复制公匙
root@。。。:/# vi /root/.ssh/authorized_keys
创建自动启动SSH服务的可执行文件run.sh,并添加可执行权限:
root@。。。:/# vi /run.sh
为这个脚本添加如下内容
#!/bin/bash
/usr/sbin/sshd -D
退出容器
root@fc1936ea8ceb:/# exit
将所退出的容器用docker commit命令保存为一个新的sshd:ubuntu镜
像:
# docker commit bef sshd:ubuntu
查看一下,存在
启动容器,并添加端口映射10022–>22。其中10022是宿主主机的端
口,22是容器的SSH服务监听端口:
# docker run -p 10022:22 -d sshd:ubuntu /run.sh
报错,经过检查阿里云10022端口没有打开。打开即可。
打开完成。在宿主主机或其他主机上上,就可以通过SSH访问
10022端口来登录容器:
# ssh 192.168.1.200 -p 10022
密码忘了,哦豁,洗白。