Docker实现CentOS容器SSH远程登录
Docker实现CentOS容器SSH远程登录
https://blog.csdn.net/A632189007/article/details/78625378
这里根据Dockerfile方式构建一个CentOS的可远程SSH的镜像。
Dockerfile文件
在/data/test/sshd_centos/目录下新建Dockerfile文件。注意:目录可以自行设定,但目录下除了Dockerfile文件外建议不要放置别的文件和目录。
vim Dockerfile
1
生成的新镜像以centos镜像为基础
FROM centos
指定作者信息
MAINTAINER by Test
安装openssh-server
RUN yum -y install openssh-server
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
指定root密码
RUN /bin/echo 'root:123456'|chpasswd
RUN /bin/sed -i 's/.session.required.pam_loginuid.so./session optional pam_loginuid.so/g' /etc/pam.d/sshd
RUN /bin/echo -e "LANG="en_US.UTF-8"" > /etc/default/local
EXPOSE 22
CMD /usr/sbin/sshd -D
build镜像
在Dockerfile当前目录执行下面语句,开始构建镜像。注意最后面的点不要忘了,表明是读取当前目录的Dockerfile文件。
docker build -t bigdata/centos-ssh:v1.0.0 .
bigdata/centos-ssh:v1.0.0:新生成的镜像名称及版本号
打包成功的话会出现下面的提示,可能时间会有点长,耐心等待。
Successfully built 2d548392b205
查看镜像
docker images
这里写图片描述
启动容器
docker run -itd -p 10022:22 --name test_centos_1 sshd/centos:v1.0
后台启动一个容器,将该容器名称设置为:test_centos_1,将容器端口22映射到宿主机端口10022。
远程访问
远程通过 宿主机IP、映射端口10022进行访问容器。
ssh远程连接docker中的container
由于工作需要,要远程连接container,本地机器是windows,以下为解决步骤:
环境
本地:Windows
↓
docker版本1.12
↓
远程:docker中的Container(Ubuntu)
Container安装ssh服务
首先进入Container,进行以下步骤:
① 安装ssh
sudo apt-get install openssh-server #安装ssh服务器
service ssh status # 查看ssh服务启动情况
service ssh start # 启动ssh服务
② 配置ssh,允许root登陆
vi /etc/ssh/sshd_config
将PermitRootLogin的值从withoutPassword改为yes
③ 重启ssh服务
service ssh restart # 重启动ssh服务
- 保存Container镜像
另外开启Docker Quickstart Terminal,保存镜像
docker ps #查看正在运行的container
找到所要保存的container的container id,假设为xxxxxx
docker commit xxxxxxxx tomjerry/foobar
(注:tomjerry/foobar为要保存的新镜像的名字,可任意写)
- 重新运行Container
docker run -it -p 50001:22 tomjerry/foobar /bin/bash
service ssh start
注意-p 50001:22这句,意思是将docker的50001端口和container的22端口绑定,这样访问docker的50001等价于访问container的22端口
- ssh连接container
你可以用xshell或putty等ssh客户端工具连接container
首先假设各方的ip如下:
本地windows ip: 192.168.99.1
docker ip:192.168.99.100
container ip:172.17.0.3
那么,你要远程container,则要访问以下地址:
ssh 192.168.99.100:50001
这样通过访问docker的50001端口,就神奇的间接连通到container的22端口了,从而达到ssh连接container的目的,至此。
用户密码验证方式登录:
1、查看 镜像列表:$ sudo docker images
2、开启容器:$ sudo docker run -tid -p 22 -P 镜像名
3、进入容器:$ sudo docker exec -it 容器名 /bin/bash
4、进入容器之后进行编辑ssh文件,如果没有ssh,需要先安装:
安装ssh-client命令:sudo apt-get install openssh-client
安装ssh-server命令:sudo apt-get install openssh-server
安装完成以后,先启动服务:sudo /etc/init.d/ssh start
启动后,可以通过“ps -e|grep ssh”查看是否正确启动。
5、编辑ssh配置文件:$sudo vim/etc/ssh/sshd_config
PermitRootLogin without-password 改为 PermitRootLogin yes`
PasswordAuthentication yes 改为 PasswordAuthentication no
6、重启服务:$ sudo service ssh restart
7、设置ssh密码:$ passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
8、查看容器ip:$ ifconfig
9、可以在主服务器中链接docker:$ ssh -p 50001 root@172.17.0.2
Docker实现CentOS容器SSH远程登录的更多相关文章
- centos 配置ssh远程登录
参考博客: http://blog.csdn.net/sangjian1006/article/details/51603236 1.修改SSH配置文件/etc/ssh/sshd_config 2.在 ...
- 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等
一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...
- Docker容器配置远程登录
Docker容器配置远程登录 前言 docker 的网络模式主要有三种,bridge.host.none: pridge是docker安装后自动创建的虚拟网卡,创建容器时默认使用此模式. host是指 ...
- SSH远程登录CentOS服务器
1.把ssh默认远程连接端口修改为2200编辑防火墙配置:vi /etc/sysconfig/iptables防火墙增加新端口2222 -A INPUT -m state --state NEW -m ...
- SSH远程登录和端口转发详解
SSH远程登录和端口转发详解 介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境. SSH 只是协议,有多种实现方式,本文基于其开源实 ...
- 【浅层优化实战】ssh远程登录Linux卡慢的全过程排查及解决方案
ssh远程登录Linux卡慢的全过程排查及解决方案 前言: 在linux操作系统使用过程中偶然一次感到使用ssh远程连接软件连接操作系统需要等待许久,第一次没在意,第二次也没在意,第三次有点忍受不住了 ...
- SSH客户端(如PuTTY)ssh远程登录Linux非常慢的解决方法
转:http://blog.useasp.net/archive/2014/05/19/solved-the-problem-of-ssh-client-such-as-putty-remote-lo ...
- Firefly安装ROS及ssh远程登录配置
一.在Linux firefly 3.10.0 上安装ROS-indigo 快捷键 CTRL + ALT + T 打开终端并安装ROS-indigo sudo sh -c 'echo "d ...
- CentOS配置ssh无密码登录
CentOS配置ssh无密码登录的注意点 前提配置:使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,如下: 然后重启ssh服务:service s ...
随机推荐
- zoj 2818 Root of the Problem
Root of the Problem Time Limit: 2 Seconds Memory Limit: 65536 KB Given positive integers B and ...
- 以太坊和IPFS如何存储数据
如何将JSON文件存储在IPFS上,并使用Oraclize访问智能合约中的数据呢? 以太坊是一个成熟的区块链,使开发人员能够创建智能合约,在区块链上执行的程序可以由交易触发.人们经常将区块链称为数据库 ...
- codeforces 315B
#include<stdio.h> int main() { int n,k,i,flag=0; while(scanf("%d%d",&n,&k)!= ...
- Hibernate 批处理(batch inserts, updates and deletes)
总结:hibernate在进行批量处理不给力的主要原因就是Session中存在缓存,而hibernate的机制就是通过session中的一级缓存去同步数据库,所以当进行批量处理时,缓存中保存的数据量很 ...
- [NOIP1998] 普及组
三连击 题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若干行, ...
- asp.net网页防刷新重复提交、防后退解决办法!
原文发布时间为:2008-10-14 -- 来源于本人的百度文章 [由搬家工具导入] 1、提交后 禁用提交按钮(像CSDN这样)2、数据处理成功马上跳转到另外一个页面! 操作后刷新的确是个问题,你可以 ...
- 50个必备的实用jQuery代码段(转载)
本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...
- EsAlert
https://www.cnblogs.com/zhaishaomin/p/7417306.html https://blog.csdn.net/pujiaolin/article/details/5 ...
- Piggy-Bank--hdu1114(完全背包)
http://acm.hdu.edu.cn/showproblem.php?pid=1114 Problem Description Before ACM can do anything, a bud ...
- [Bzoj3209]花神的数论题(数位dp)
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2633 Solved: 1182[Submit][Status][Disc ...