zoukankan      html  css  js  c++  java
  • docker

    docker安装ssh

    通过命令行安装

    1. pull ubuntu镜像
      docker pull ubuntu:latest
    2. 启动并进入bash
    docker run -it -d ubuntu:lastest /bin/bash
    # 查看刚刚运行容器的id
    docker ps
    # 在容器中执行bash命令
    docker exec -it id /bin/bash
    
    1. 安装openssh-server并启动
    apt-get update
    apt-get install openssh-server
    # 启动之前需手动创建/var/run/sshd,不然启动sshd的时候会报错
    mkdir -p /var/run/sshd
    # sshd以守护进程运行
    /usr/sbin/sshd -D &
    # 安装netstat,查看sshd是否监听22端口
    apt-get install net-tools
    netstat -apn | grep ssh
    

    如果已经监听22端口,说明sshd服务启动成功

    1. ssh登陆
    # 生成ssh key
    ssh-keygen -t rsa
    # 修改sshd-config允许root登陆
    sed -i 's+PermitRootLogin prohibit-password+PermitRootLogin yes' /etc/ssh/sshd-config
    

    修改完sshd-config之后需要重启sshd服务

    // 找到pid
    ps -aux | grep ssh
    kill -9 pid
    /usr/sbin/sshd -D &
    

    查看容器ip

    ifconfig
    

    在主机上进行登陆

    ssh root@ip
    

    就可以登录成功了,但是注意这里是docker容器的宿主机才能登陆成功,如果需要其他机器登陆,可以在启动docker的时候进行端口映射

    // 11122宿主机端口,22为容器端口
    docker run -it -p 11122:22 
    // 在其他机器上可以使用以下命令登陆,假设宿主机ip为192.168.1.101
    ssh -p 11122 root@192.168.1.101
    
    1. 保存容器
    // 把id为id的容器保存
    docker commit id sshd:ubuntu
    // 停止容器
    docker stop id
    

    通过dockerfile

    # 以最新的Ubuntu镜像为模板
    FROM ubuntu:latest
    
    // 将本目录下的sources.list作为容器的一个文件
    ADD sources.list /root/sources.list
    // 使用阿里Ubuntu源,更新快
    RUN cp /root/sources.list  /etc/apt/sources.list.d/aliyun.list
    
    RUN apt-get update
    RUN apt-get install -y openssh-server
    RUN apt-get install -y net-tools
    RUN apt-get install -y vim
    RUN mkdir -p /var/run/sshd
    RUN mkdir -p mkdir/root/.ssh/
    // 修改root密码,便于远程登录
    RUN echo root:123456 | chpasswd
    // 将key生成在指定文件内
    RUN ssh-keygen -q -t rsa -b 2048  -f /etc/ssh/ssh_host_rsa_key -P '' -N ''
    // 配置ssh可以使用root登陆
    RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    
    // 开放22端口
    EXPOSE 22
    
    CMD /usr/sbin/sshd -D &
    

    根据Dockerfile build镜像

    docker build -t nginx:ubuntu .
    
  • 相关阅读:
    查看网络接口
    httpd sshd firewalld 很多服务后面的d是什么意思
    CentOS7入门
    1005:取余,循环,找规律
    1006 Tick and Tick
    cv.Mat 与 .txt 文件数据的读写操作
    禁止别人用QQ号搜索到你,同时告诉你如何破解
    LaTex初学
    github上对一些名词的理解(之如fork)
    CCF Z字形扫描
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/6384471.html
Copyright © 2011-2022 走看看