当前位置: 首页 > news >正文

Docker CentOS7 安装SSH

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一. 从docker hub 下载centos 官方镜像

hr:centos7 hr$ docker pull centos:7 

下载完后,查看本地资源库:
hr:centos7 hr$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    centos               7                   ce20c473cd8a        7 weeks ago         172.3 MB

运行容器
hr:centos7 hr$ docker run -i -t centos:7 /bin/bash

二. 安装passwd,openssl,openssh-server

[root@b5926410fe60 /]# yum install passwd openssl openssh-server -y

启动sshd:
# /usr/sbin/sshd -D
这时报以下错误:
[root@ b5926410fe60 /]# /usr/sbin/sshd
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key 

执行以下命令解决:
[root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''    
[root@b5926410fe60 /]#  ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
[root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N '' 

然后,修改 /etc/ssh/sshd_config 配置信息:

1.UsePAM yes 改为 UsePAM no
2.UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no

[root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
[root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

修改完后,重新启动sshd
[root@b5926410fe60 /]# /usr/sbin/sshd -D

三. 修改root 密码

[root@b5926410fe60 /]# passwd root

四. 查看容器ip地址(如果宿主机是linux操作系统则跳过这一步)

[root@b5926410fe60 /]# ip addr ls eth0
84: eth0@if85: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link 
       valid_lft forever preferred_lft forever

五. 将当前容器保存为镜像

hr:centos7 hr$ docker ps -all
CONTAINER ID  IMAGE       COMMAND       CREATED             STATUS                   PORTS      NAMES
b5926410fe60  centos:7   "/bin/bash"  4 minutes ago       Exited (0) 4 seconds ago           centos7ssh

hr:centos7 hr$ docker commit b5926410fe60 herong/centos7-ssh

六. 在宿主机上基于新创建的镜像启动新的容器

--先删除之前的容器
hr:centos7 hr$ docker ps -all
CONTAINER ID        IMAGE      COMMAND             CREATED             STATUS                      PORTS               NAMES
4122f818a741        herong/centos7-ssh:latest   "/usr/sbin/sshd"    13 seconds ago      Exited (0) 13 seconds ago                       happy_mclean

hr:centos7 hr$ docker rm -f 4122f818a741

--基于新镜像运行容器
hr:centos7 hr$ docker run -d -p 10022:22 herong/centos7-ssh:latest /usr/sbin/sshd -D

--查看映射端口是否成功
hr:centos7 hr$ docker ps -all
CONTAINER ID        IMAGE     COMMAND               CREATED             STATUS              PORTS                   NAMES
4966d35fe0a3        herong/centos7-ssh:latest   "/usr/sbin/sshd -D"   3 seconds ago       Up 3 seconds        0.0.0.0:10022->22/tcp   compassionate_kowalevski

hr:centos7 hr$ docker port 4966d35fe0a3
22/tcp -> 0.0.0.0:10022

七. 从宿主机连接到容器

如果宿主机是非linux操作系统,则需要通过docker-machine ip连到容器
-- 查看docker-machine Ip地址
hr:centos7 hr$ docker-machine ip default
192.168.99.100

--通过docker-machine ip  连接到容器,输入之前设置的密码即可登录成功
hr:centos7 hr$ ssh root@192.168.99.100 -p 10022
The authenticity of host '[192.168.99.100]:10022 ([192.168.99.100]:10022)' can't be established.
ECDSA key fingerprint is SHA256:d3JNckcTVv1ASJlwv+IT/bJwlzMC4U1T/PmsKYIHMhQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.99.100]:10022' (ECDSA) to the list of known hosts.
root@192.168.99.100's password: 
[root@4966d35fe0a3 ~]# pwd
/root

如果宿主机是linux操作系统,则通过第4步查看到的ip地址连接
hr:centos7 hr$ ssh root@172.17.0.2 -p 10022

转载于:https://my.oschina.net/colour10/blog/1621975

相关文章:

  • BZOJ3273 : liars
  • Python学习记录——Ubuntu(一)基本配置、快捷键和系统启停命令行
  • 使用Shiro进行权限控制的实现流程
  • mysql开发之---每日一得01
  • 网络基础CCNP|OSPF(5)
  • Npoi导出excel整理(附源码)
  • 理解数据库连接池底层原理之手写实现
  • python结巴(jieba)分词
  • [svc]ssh+gg二步认证
  • 文件上传到oss代码片段
  • Idea卡在Maven导入工程
  • 学习笔记 - Git
  • forget word out a~2
  • SSM-MyBatis-18:Mybatis中二级缓存和第三方Ehcache配置
  • 34.CSS传统布局【上】
  • Google 是如何开发 Web 框架的
  • EventListener原理
  • gf框架之分页模块(五) - 自定义分页
  • k个最大的数及变种小结
  • Laravel核心解读--Facades
  • Promise初体验
  • vue.js框架原理浅析
  • 大整数乘法-表格法
  • 给github项目添加CI badge
  • 关于List、List?、ListObject的区别
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 简单数学运算程序(不定期更新)
  • 世界上最简单的无等待算法(getAndIncrement)
  • 一个JAVA程序员成长之路分享
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十八)SpringBoot之发送QQ邮件
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 回调、接口回调、 委托
  • @Pointcut 使用
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [100天算法】-x 的平方根(day 61)
  • [2016.7 day.5] T2
  • [20161214]如何确定dbid.txt
  • [20190416]完善shared latch测试脚本2.txt
  • [Android]使用Retrofit进行网络请求
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BZOJ4010]菜肴制作
  • [c]统计数字
  • [CSS] 点击事件触发的动画
  • [Foreman]解决Unable to find internal system admin account