ssh登录docker容器

方法一

获取镜像并配置软件源

ubuntu@ubuntu18:/home/dockertmp$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
423ae2b273f4: Pull complete 
de83a2304fa1: Pull complete 
f9a83bce3af0: Pull complete 
b6b53be908de: Pull complete 
Digest: sha256:04d48df82c938587820d7b6006f5071dbbffceb7ca01d2814f81857c631d44df
Status: Downloaded newer image for ubuntu:18.04
ubuntu@ubuntu18:/home/dockertmp$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
negoowen/ghostcat   1.0                 d8baa8c78317        2 hours ago         463MB
ubuntu              18.04               72300a873c2c        2 days ago          64.2MB
test4               0.1                 ece6e7bf2d44        4 days ago          64.2MB
root@2b571484c05e:/# apt-get update
Get:1 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]           
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:3 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [835 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]

需要换源的话可以进行替换,Ubuntu 的软件源配置文件是/etc/apt/sources.list

清华源:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

安装和配置SSH服务

# 镜像里运行
root@2b571484c05e:/# apt-get install openssh-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
...
Processing triggers for ca-certificates (20180409) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
root@2b571484c05e:/# mkdir -p /var/run/sshd
root@2b571484c05e:/# /usr/sbin/sshd -D &
[1] 3836
root@2b571484c05e:/# netstat -an | grep 22
bash: netstat: command not found
root@2b571484c05e:/# apt-get install net-tools
Reading package lists... Done
# 22端口已经处于监听状态
root@2b571484c05e:/# netstat -an | grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
root@2b571484c05e:/# 
root@2b571484c05e:/# sed -ri 's#session    required     pam_loginuid.so#session    required     pam_loginuid.so#g' /etc/pam.d/sshd
root@2b571484c05e:/# 

本机创建公钥并复制到容器内(免密码登录)

如果不需要免密码登录的话可以跳过

ubuntu@ubuntu18:/home/dockertmp$  ssh-keygen -t  rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AYQAHbqVUjIzu/qD14m7h1gEvni9gKP8cozUcLGoUr0 ubuntu@ubuntu18
The key's randomart image is:
+---[RSA 2048]----+
|*o+o oo          |
|.O.o.  .         |
|=.+.o   .        |
| Ooo.    .       |
|=+=. .  S        |
|Bo+.E            |
|**o= o           |
|+==o=            |
| .B*             |
+----[SHA256]-----+
ubuntu@ubuntu18:/home/dockertmp$ cd ~/.ssh/
ubuntu@ubuntu18:~/.ssh$ ls
id_rsa  id_rsa.pub
ubuntu@ubuntu18:~/.ssh$ cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJkIPpIwbjLqiHj0iltCaNn8tOqSvKcWE5nqAU1qYtbLzNUP8ercKa7ocbUGt/qdJiVafTlxnBEC5xhgPcQI9a29JztFNiA3i2JVXDaVI9NEmuspMYnuQDd+V1JRDtc6I5gQkYVziqyNfrV0MCj/ng5m8dFyvU8j4Rw3zN8o9r4Z3GQJxvZNYk+ouI69BdSgfl/zIDMHjHW5H/0WF8Xwa2VG5ALcwJQrmelsPnUlaIrEmwewTDYDoS9NnG/J0NDL+/33+iXvzOLXEylH9+IeV1VymLI4DDm4OoEFFGAjRqXMoUa83WK2HQxLIgWAxPVEwPD7lU07JGvmKL7Xo8DhX3 ubuntu@ubuntu18
ubuntu@ubuntu18:~/.ssh$ 
ubuntu@ubuntu18:~/.ssh$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt


root@2b571484c05e:~/.ssh# echo -e "\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJkIPpIwbjLqiHj0iltCaNn8tOqSvKcWE5nqAU1qYtbLzNUP8ercKa7ocbUGt/qdJiVafTlxnBEC5xhgPcQI9a29JztFNiA3i2JVXDaVI9NEmuspMYnuQDd+V1JRDtc6I5gQkYVziqyNfrV0MCj/ng5m8dFyvU8j4Rw3zN8o9r4Z3GQJxvZNYk+ouI69BdSgfl/zIDMHjHW5H/0WF8Xwa2VG5ALcwJQrmelsPnUlaIrEmwewTDYDoS9NnG/J0NDL+/33+iXvzOLXEylH9+IeV1VymLI4DDm4OoEFFGAjRqXMoUa83WK2HQxLIgWAxPVEwPD7lU07JGvmKL7Xo8DhX3 ubuntu@ubuntu18\n\n" > authorized_keys
root@2b571484c05e:~/.ssh# cat authorized_keys 


ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJkIPpIwbjLqiHj0iltCaNn8tOqSvKcWE5nqAU1qYtbLzNUP8ercKa7ocbUGt/qdJiVafTlxnBEC5xhgPcQI9a29JztFNiA3i2JVXDaVI9NEmuspMYnuQDd+V1JRDtc6I5gQkYVziqyNfrV0MCj/ng5m8dFyvU8j4Rw3zN8o9r4Z3GQJxvZNYk+ouI69BdSgfl/zIDMHjHW5H/0WF8Xwa2VG5ALcwJQrmelsPnUlaIrEmwewTDYDoS9NnG/J0NDL+/33+iXvzOLXEylH9+IeV1VymLI4DDm4OoEFFGAjRqXMoUa83WK2HQxLIgWAxPVEwPD7lU07JGvmKL7Xo8DhX3 ubuntu@ubuntu18


root@2b571484c05e:~/.ssh# 
root@2b571484c05e:/# vi run.sh
root@2b571484c05e:/# cat run.sh 
#!/bin/bash
/usr/sbin/sshd -D
root@2b571484c05e:/# 

保存镜像

ubuntu@ubuntu18:/home/dockertmp$ docker ps -a
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS                      PORTS                                            NAMES
2b571484c05e        ubuntu:18.04            "bash"              45 minutes ago      Exited (0) 50 seconds ago   ubuntu@ubuntu18:/home/dockertmp$ docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                                            NAMES
2b571484c05e        ubuntu:18.04            "bash"              About an hour ago   Up 56 seconds                                                        distracted_aryabhata
4cfc4a0aaa1a        negoowen/ghostcat:1.0   "catalina.sh run"   2 hours ago         Up 2 hours          0.0.0.0:8009->8009/tcp, 0.0.0.0:8080->8080/tcp   ghostcat
ubuntu@ubuntu18:/home/dockertmp$ docker exec -it 2b571484c05e bash
root@2b571484c05e:/# ls
bin   dev  home  lib64  mnt  proc  run     sbin  sys  usr
boot  etc  lib   media  opt  root  run.sh  srv   tmp  var
root@2b571484c05e:/# exit
exit
ubuntu@ubuntu18:/home/dockertmp$ docker commit 2b5 ssh1
sha256:1f72a3bd66509d457e22f69c70796b9496e7dcaad7f548244f39ac76b4d2af74
ubuntu@ubuntu18:/home/dockertmp$ docker run -p 8022:22 -d ssh1 /run.sh
87f0c4213600e106db3f2f64276cce2670c46348a0cca7c31174c4e33feb257a
ubuntu@ubuntu18:/home/dockertmp$ 
ubuntu@ubuntu18:~/.ssh$ ssh 192.168.195.133 -p 8022
登录即可

方法二

使用dockerfile

ubuntu@ubuntu18:/home/dockertmp$ cat Dockerfile
# 基础镜像信息
FROM ubuntu:18.04
 
# 维护者信息
MAINTAINER xxx xxx@163.com
 
# 更新apt缓存、安装ssh服务
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd /root/.ssh
RUN sed -ri 's#session    required     pam_loginuid.so#session    required     pam_loginuid.so#g' /etc/pam.d/sshd
 
# 配置免密要和自启动脚本
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
 
# 暴露22端口
EXPOSE 22
 
# 设置脚本自启动
CMD ["/run.sh"]


ubuntu@ubuntu18:/home/dockertmp$ docker build -t sshd:ubuntu2 .
ubuntu@ubuntu18:/home/dockertmp$  docker run -it --name ssh_test -p 10122:22 sshd:ubuntu2 bash
ubuntu@ubuntu18:/home/dockertmp$  ssh 10.0.0.31 -p 10122
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值