`

docker容器ssh设置

阅读更多
1、用户密码认证方式登陆
hsl@ubuntu:~$ sudo docker images
[sudo] hsl 的密码: 
REPOSITORY TAG IMAGE ID CREATED SIZE
hsl/ubuntu 14.04_add_sourcealiyun_git_vim_ssh 7e81fb2f82c5 44 minutes ago 634.2 MB
hsl/ubuntu 14.04_JenkinsWithDocker_key 6fb1d3cb7983 46 hours ago 760 MB
hsl/ubuntu 14.04_JenkinsWithDocker_password 659fcb00b0dc 3 days ago 760.1 MB
ubuntu 14.04 4a725d3b3b1c 8 days ago 188 MB
training/webapp latest 6fae60ef3446 15 months ago 348.8 MB
hsl@ubuntu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
hsl@ubuntu:~$ sudo docker run -tid -p 22 -P hsl/ubuntu:14.04_add_sourcealiyun_git_vim_ssh
ea153153c8837a4b0e1a8d0e6945200c7ac820c358d546202f1a95c72f12ca77
hsl@ubuntu:~$ sudo docker exec -ti ea /bin/bash
root@ea153153c883:/# cd /etc/ssh
root@ea153153c883:/etc/ssh# vim sshd_config 
sshd_config 需要关注三个地方,未修改之前是这样:
PermitRootLogin without-password
#AuthorizedKeysFile %h/.ssh/authorized_keys
#PasswordAuthentication yes
说明:
#PermitRootLogin yes #允许root用户以任何认证方式登录(用户名密码认证和公钥认证)
#PermitRootLogin without-password #只允许root用公钥认证方式登录
#PermitRootLogin no #不允许root用户以任何认证方式登录
这里先修改两处:
PermitRootLogin without-password 改为 PermitRootLogin yes
#PasswordAuthentication yes 改为 PasswordAuthentication yes
root@ea153153c883:/etc/ssh# cd
root@ea153153c883:~# service ssh start
* Starting OpenBSD Secure Shell server sshd [ OK ] 
root@ea153153c883:/# passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@ea153153c883:/# ifconfig
#获得docker的内网地址(inet addr):172.17.0.2
root@ea153153c883:/# exit
exit
hsl@ubuntu:~$ ssh root@172.17.0.2
root@172.17.0.2's password: 
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-93-generic x86_64)
* Documentation:  https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
root@ea153153c883:~# exit
logout
Connection to 172.17.0.2 closed.
hsl@ubuntu:~$ ifconfig
#获得宿主机的内网地址(inet地址):192.168.127.159,这里试一下端口映射方式登陆docker
#因为做了端口映射,所以可以直接从映射的端口登陆,只需要知道和docker的22端口映射的宿主机端口和宿主机的ip(如果和docker的22做端口映射时候采用默认IP方式,则默认宿主机的所有IP都和docker的22端口映射,这样localhost和子网IP均可等登陆)
#即ssh root@172.17.0.2和ssh -p 32770 root@192.168.127.159都可以登陆docker
hsl@ubuntu:~$ ssh -p 32771 root@192.168.127.159
#第一次登陆有警告
The authenticity of host '[192.168.127.159]:32771 ([192.168.127.159]:32771)' can't be established.
ECDSA key fingerprint is SHA256:icDOU4lcWTiFb4eIKUtosFNrqzGMo5ufzqXQfPdtSZg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.127.159]:32771' (ECDSA) to the list of known hosts.
root@192.168.127.159's password: 
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-36-generic x86_64)
* Documentation:  https://help.ubuntu.com/
Last login: Sun Sep 4 06:00:37 2016 from 172.17.0.1
root@ea153153c883:~# exit
logout
Connection to 192.168.127.159 closed.
hsl@ubuntu:~$ ssh -p 32771 root@192.168.127.159
#再登录一遍就没有警告了
root@192.168.127.159's password: 
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-36-generic x86_64)
* Documentation:  https://help.ubuntu.com/
Last login: Sun Sep 4 06:01:33 2016 from 192.168.127.159
root@ea153153c883:~# exit
logout
Connection to 192.168.127.159 closed.
 
2、公钥认证方式登陆
hsl@ubuntu:~$ sudo docker run -tid -p 22 -P hsl/ubuntu:14.04_add_sourcealiyun_git_vim_ssh
f2e54200c5c7f3310a27e274d7d8c9585ed3c79f921cb63edb8f3a00d1165e24
hsl@ubuntu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2e54200c5c7 hsl/ubuntu:14.04_add_sourcealiyun_git_vim_ssh "/bin/bash" 15 seconds ago Up 10 seconds 0.0.0.0:32768->22/tcp big_brown
hsl@ubuntu:~$ sudo docker exec -it f2 /bin/bash
root@f2e54200c5c7:/# vim /etc/ssh/sshd_config 
把第一步中提到的需要注意的三个地方做以下修改:
PermitRootLogin without-password
#AuthorizedKeysFile %h/.ssh/authorized_keys改为AuthorizedKeysFile %h/.ssh/authorized_keys
#PasswordAuthentication yes改为PasswordAuthentication yes
(如果服务器不在本地,千万不能PasswordAuthentication yes->no,万一当前的ssh链接中断,万一RAS认证没弄好,密码验证又禁止了。可以理解为公钥认证优先于用户密码认证,但是万一公钥认证失败,用用户密码认证以防万一)
root@f2e54200c5c7:/# exit
exit
hsl@ubuntu:~$ ssh-keygen -t rsa
#一直回车,生成宿主机的密钥
hsl@ubuntu:~$ cd .ssh
hsl@ubuntu:~/.ssh$ ls
id_rsa id_rsa.pub
hsl@ubuntu:~/.ssh$ scp id_rsa.pub root@172.17.0.2:~/.ssh/
root@172.17.0.2's password: 
id_rsa.pub 100% 392 0.4KB/s 00:00  
hsl@ubuntu:~/.ssh$ sudo docker exec -it f2 /bin/bash
root@ea153153c883:/# cd  
root@ea153153c883:~# cd .ssh
root@ea153153c883:~/.ssh# ls
id_rsa.pub
root@ea153153c883:~/.ssh# mv id_rsa.pub authorized_keys
root@ea153153c883:~/.ssh# ls
authorized_keys
********可以替换上面的通过scp方法把公钥传送到docker*********
#或者直接把宿主机的id_rsa.pub内容复制到docker的/root/.ssh/authorized_keys
hsl@ubuntu:~$ cd .ssh
hsl@ubuntu:~/.ssh$ ls
id_rsa id_rsa.pub known_hosts
hsl@ubuntu:~/.ssh$ cat id_rsa.pub 
#宿主机的公钥
hsl@ubuntu:~/.ssh$ sudo docker exec -it f2 /bin/bash
root@f2e54200c5c7:/# ssh-keygen -t rsa
#这一步只是为了方便产生docker的.ssh目录
root@f2e54200c5c7:/# cd 
root@f2e54200c5c7:~# cd .ssh
root@f2e54200c5c7:~/.ssh# ls
id_rsa id_rsa.pub
root@f2e54200c5c7:~/.ssh# touch authorized_keys
root@f2e54200c5c7:~/.ssh# ls
authorized_keys id_rsa id_rsa.pub
root@f2e54200c5c7:~/.ssh# vim authorized_keys 
#把宿主机的id_rsa.pub内容复制到docker的/root/.ssh/authorized_keys
********可以替换上面的通过scp方法把公钥传送到docker*********
root@f2e54200c5c7:/# service ssh start
* Starting OpenBSD Secure Shell server sshd [ OK ] 
root@f2e54200c5c7:/# exit
exit
hsl@ubuntu:~/.ssh$ ssh root@172.17.0.2
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-36-generic x86_64)
* Documentation:  https://help.ubuntu.com/
Last login: Sun Sep 4 08:18:21 2016 from 172.17.0.1
root@f2e54200c5c7:~# exit
logout
分享到:
评论

相关推荐

    docker-ssh, 按名称在所有本地 Docker 容器中.zip

    docker-ssh, 按名称在所有本地 Docker 容器中 docker允许使用ssh连接到所有本地 Docker 容器,如下所示:ssh container-name.docker如果 container-name 是容器的名称,ssh正在运行。 为当前用户自动安装

    docker容器里安装ssh的具体步骤

    docker安装ssh 通过命令行安装 1.pull ubuntu镜像 docker pull ubuntu:latest 2.启动并进入bash docker run -it -d ubuntu:lastest /bin/bash # 查看刚刚运行容器的id docker ps # 在容器中执行bash命令 docker...

    详解docker 允许主机ssh连接到docker容器中

    本篇文章主要介绍了详解docker 允许主机ssh到docker容器中,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    docker-ssh:Docker容器的SSH服务器〜因为每个容器都应该可访问

    Docker容器的SSH服务器〜因为每个容器都应可访问。 是否想立即通过SSH进入您的容器? 干得好: $ docker run -d -p 2222:22 \ -v /var/run/docker.sock:/var/run/docker.sock \ -e FILTERS={\"name\":[\"^/my-...

    Go-Shipspotter-用于通过SSH将端口隧道转发到远程Docker容器的工具

    Go-Shipspotter 是一个基于 Go 语言开发的实用工具,专门设计用于通过 SSH(Secure Shell)协议将端口隧道转发到远程 Docker 容器。这个工具为开发者提供了一种安全且便捷的方式,来访问运行在远程服务器上的 Docker...

    群晖中docker开启ssh.pdf

    在本文中,我们将讨论如何在群晖NAS上运行的Docker容器中启用SSH服务,特别是针对CentOS容器。 首先,我们需要理解Docker的基本概念。Docker的设计目标是使每个容器专注于运行单个进程,以实现更好的资源隔离和效率...

    配置Docker容器ssh服务端实现远程ssh登录

    #安装ssh server 和 client RUN DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server openssh-client #此步骤主要目的是修改sshd_config配置文件,把配置文件中的”PermitRootLogin without-...

    docker-ssh-tunnel:基于 Docker 的 SSH 隧道

    $ docker pull youssefkababe/ssh-tunnel $ docker run -d -p 8080:8080 --name="tunnel" youssefkababe/ssh-tunnel 然后将您的浏览器或系统配置为使用您服务器的 IP 地址在端口 8080 上连接到您的 Socks 代理。 ...

    群晖中docker开启ssh.docx

    在群晖中使用 Docker 需要开启 SSH 服务,以便于远程管理容器。下面将详细介绍如何在群晖的 Docker 中开启 SSH 服务。 首先,需要了解 Docker 的设计理念。Docker 的设计之初就是每个 Docker 里面只有一个独立的...

    群晖中docker开启ssh (2).pdf

    本文将详细讨论如何在群晖的Docker容器中开启SSH服务。 首先,群晖用户已经知道如何安装Docker并创建容器,这里不再赘述。重点在于,在Docker容器内启用SSH服务,这通常是为了远程管理和控制容器内的应用。然而,...

    alpine-ssh:在高山docker容器上启用SSH

    上面的Dockerfile在ssh服务器中启用了root权限,并在创建docker容器时运行ssh。 如何使用ssh运行docker容器? 我已经在Dockerfile中公开了端口22。 您可以使用以下命令运行docker容器。 $ docker run -d -p 2222:...

    群晖中docker开启ssh (2).docx

    由于非特权模式下,Docker容器无法自动生成SSH密钥,所以需要手动创建: ``` ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_root_rsa_key ssh-keygen -t ecdsa -b 256 -f /etc/ssh/ssh_host_ecdsa_key ssh-keygen...

    Docker 如何上传本地文件到容器目录?

    先贴上命令: docker cp 本地文件路径 ID全称:容器路径...2.使用docker命令复制到docker容器下指定的目录(注意容器是正在启动的): docker cp /usr/local/mysql-connector-java-5.1.46.jar logstash:/usr/share/logst

    docker-ssh-agent:通过SSH连接的Jenkins代理的Docker映像

    运行Docker容器 docker run jenkins/ssh-agent " <public> " 然后,您就可以使用将该作为具有相应私钥的“ jenkins”进行连接。 如何通过Docker插件使用此映像 要将此映像与,您需要使用环境变量JENKINS_AGENT_SSH_...

    京东Docker容器实践

    京东Docker容器实践

    VSCODE远程在docker容器进行gdb调试 · 语雀.pdf

    本文主要介绍如何使用VSCode远程在docker容器进行gdb调试,包括远程登录、安装插件、设置免密登录、配置launch.json文件等步骤。 一、远程登录 1. 点击活动栏remote_ssh图标,点击新增,并填入username@ip。 2. ...

    实现docker的telnet ssh远程登录.docx

    "使用 Docker 实现 Telnet/SSH 远程登录" 本文将详细介绍如何使用 Docker 实现 Telnet/SSH 远程登录,包括 Docker 配置端口映射、创建非 root 用户和密码、配置远程 Telnet 服务等步骤。 一、 Docker 配置端口映射...

Global site tag (gtag.js) - Google Analytics