zoukankan      html  css  js  c++  java
  • docker使用ssh远程连接容器(没钱买服务器又不想安装虚拟机患者必备)

    突然有需求,需要使用go语言写个ssh终端连接功能,这时候手上又没有服务器,虚拟机也没有,正好使用docker搞起来

    docker容器开启sshd服务,模拟服务器

    我们知道docker是可以用exec来直接访问容器的,但是还不够high,有时候要模拟服务器的登录总不能用docker exec吧,来吧,老司机带你飞!

    以centos为例,需要几步操作

    1.安装openssh-server

    2.初始化root用户密码

    3.开启sshd服务

    废话不多说,dockerfile献上

    FROM centos
    RUN yum install -y wget && 
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  && 
    yum install -y passwd && 
    yum install -y openssh-server  ssh-keygen && 
    echo 'abcd1234' | passwd root --stdin
    RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" -q && 
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" -q && 
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" -q
    #RUN systemctl enable sshd
    CMD /usr/sbin/sshd && tail -f /var/log/wtmp

    简单解释一下,

    • 安装openssh-server
    yum install -y wget && 
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  && 
    yum install -y passwd && 
    yum install -y openssh-server  ssh-keygen
    • 修改root密码为88888888
    echo '88888888' | passwd root --stdin
    • 创建ssh-keygen创建相关的ssh文件,-q的意思是静默模式(就是默认是需要让你回车输入的,加上这个直接跳过)
    RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" -q && 
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" -q && 
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" -q
    • 开启sshd服务,并用tail来前台执行阻止docker容器退出 
    CMD /usr/sbin/sshd && tail -f /var/log/wtmp

    一、构建镜像

    Dockerfile目录下执行,yeah,就是chenqionghe/centos镜像,你也可以弄成自己的,例如muscle/lightwegiht

    docker build -t chenqionghe/centos .

    二、运行容器

    docker run --name centos_ssh -p 2222:22 -it chenqionghe/centos  

    三、使用ssh连接容器

     这里使用了2222端口来映射容器里的22端口,运行起来就可以使用ssh连接了,输出设置好的88888888密码,注意,这里用的是2222映射的端口  

    ➜  ~ ssh root@127.0.0.1 -p 2222
    root@127.0.0.1's password:
    Last login: Tue Nov 20 04:10:17 2018 from 172.17.0.1
    [root@a8c8e0fbd74f ~]# ls -l /
    total 56
    -rw-r--r--   1 root root 12030 Oct  6 19:15 anaconda-post.log
    lrwxrwxrwx   1 root root     7 Oct  6 19:14 bin -> usr/bin
    drwxr-xr-x   5 root root   360 Nov 20 04:09 dev
    drwxr-xr-x  54 root root  4096 Nov 20 04:09 etc
    drwxr-xr-x   2 root root  4096 Apr 11  2018 home
    lrwxrwxrwx   1 root root     7 Oct  6 19:14 lib -> usr/lib
    lrwxrwxrwx   1 root root     9 Oct  6 19:14 lib64 -> usr/lib64
    drwxr-xr-x   2 root root  4096 Apr 11  2018 media
    drwxr-xr-x   2 root root  4096 Apr 11  2018 mnt
    drwxr-xr-x   2 root root  4096 Apr 11  2018 opt
    dr-xr-xr-x 223 root root     0 Nov 20 04:09 proc

    以上就是使用docker开启ssh模拟服务器的全过程,

    附上ubuntu的Dockerfile,原理大同小异

    FROM ubuntu:18.04
    
    # Ali apt-get source.list
    RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && 
    echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list && 
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
    
    #安装openssh-server
    RUN apt-get -y update && apt-get -y upgrade && apt-get install -y openssh-server
    
    #修改默认密码
    RUN echo 'root:88888888' | chpasswd
    RUN mkdir -p /run/sshd
    # 允许登录
    RUN sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config
    
    RUN  apt-get install -y python vim curl
    
    CMD /usr/sbin/sshd -D && tail -f /var/log/wtmp

    hight起来,light weight baby! 

  • 相关阅读:
    broncho a1 hack指南-准备硬件
    嵌入式GUI ftk0.1发布
    ASP.net页面防刷新
    C#反射入门教程(转)
    万物生萨顶顶
    [转载内容]C# win程序中主窗体菜单的权限控制
    VB.net技巧更新(一)
    XML与dataset里相互读取操作
    操作EXCEL代码(c#完全版)
    [转载内容]动态创建菜单,menustrip,根据权限显示菜单,控制菜单可用,反射,给窗体传值,反射对象传值,public static Object CreateInstance ( Type type, params Object[] args )
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/9988566.html
Copyright © 2011-2022 走看看