如何在centos docker容器中支持sshd

### 1 启动容器,以centos 为例,其他没试过

#####root用户执行下面的语句,非root,加个sudo:
```shell
docker run -d --privileged=true --name=centos centos /usr/sbin/init whlile true
```
解释一下
--privileged=true可以解决dbus没有权限启动的问题
/usr/sbin/init 可以解决不启动dbus的问题,因为centos镜像Dockerfile的默认CMD为/bin/bash,不启动dbus

### 2 进入容器查看dbus
```shell
systemctl status dbus,
```
状态正常应该如下所示
```shell
[[email protected] /]# systemctl status dbus
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/usr/lib/systemd/system/dbus.service; static; vendor preset: disabled)
Active: active (running) since Fri 2018-12-14 11:31:36 UTC; 1min 16s ago
Docs: man:dbus-daemon(1)
Main PID: 183 (dbus-daemon)
CGroup: /docker/7df194571ba40af24540694149be9c353ed201ef3495f97b7f91c7c3e5f6031b/system.slice/dbus.service
└─183 /usr/bin/dbus-daemon --system --address=systemd: --nofork --...
? 183 /usr/bin/dbus-daemon --system --address=systemd: --nofork --...

```
### 3 安装openssh-server,如果要ssh到其他机器,也可以把openssh-clients也装了
##### -y 直接确认 -q 不想看一堆的安装信息的时候加上
##### 命令行:
```shell
yum -y -q install openssh-server
```
### 4 编辑sshd配置文件,可以修改端口等配置
非必须,net的host模式启动会和宿主机冲突,不改起不来
```shell
vi /etc/ssh/sshd_config
#Port 22
```
### 5 启动sshd服务并查看即可
```shell
systemctl start sshd
systemctl status sshd
```
##### 如下启动成功
```shell
[[email protected] /]# systemctl start sshd
[[email protected] /]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-12-14 11:48:34 UTC; 12s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 2292 (sshd)
CGroup: /docker/7df194571ba40af24540694149be9c353ed201ef3495f97b7f91c7c3e5f6031b/system.slice/sshd.service
└─2292 /usr/sbin/sshd -D
? 2292 /usr/sbin/sshd -D

Dec 14 11:48:34 7df194571ba4 systemd[1]: Starting OpenSSH server daemon...
Dec 14 11:48:34 7df194571ba4 sshd[2292]: Server listening on 0.0.0.0 port 22.
Dec 14 11:48:34 7df194571ba4 sshd[2292]: Server listening on :: port 22.
Dec 14 11:48:34 7df194571ba4 systemd[1]: Started OpenSSH server daemon.
[[email protected] /]#

```
### 6 设置密码
```shell
[[email protected] /]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[[email protected] /]#
```
### 7 本地登录测试一下,
##### 远程要么映射端口,要么net=host模式改22为其他端口,登录成功
```shell
[[email protected] /]# ssh localhost
The authenticity of host ‘localhost (127.0.0.1)‘ can‘t be established.
ECDSA key fingerprint is SHA256:CGSoUYr82TXpUZXL2xM3PdB+1ku8ZS45yKp8JQdnW18.
ECDSA key fingerprint is MD5:c0:0d:f1:54:fe:f0:f2:83:ca:3b:b3:50:49:42:78:54.
Are you sure you want to continue connecting (yes/no)? yes

Last failed login: Fri Dec 14 11:54:27 UTC 2018 from localhost on ssh:notty
There were 3 failed login attempts since the last successful login.
```
转载请注明出处
https://www.aibug.cn/doc/web/#/page/edit/9/12

原文地址:https://www.cnblogs.com/aibug/p/10121503.html

时间: 2024-10-08 21:31:44

如何在centos docker容器中支持sshd的相关文章

Docker容器中运行ASP.NET Core

在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇到了. 不过首先,对于不熟悉的朋友我还是来解释一下Linux容器和Windows容器的概念. 由于容器成为虚拟化和应用托管的一种不可避免的选项,Windows也开始为公众提供容器功能(其实微软具备和使用容器技术很久了).这

在Docker容器中部署Web应用

本文直接讲解如何在Docker容器中实战部署一个Web应用程序,关于Docker相关的概念和如何安装Docker请参考相关资料完成. 第一步:工具准备 演示如何在Docker容器中部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用.另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作. 安装jre,请参考:http://www.wikihow.com/Install-Java-on-Linux 安装tomcat,请参考:ht

无需安装 vsftpd , 直接使用 FTP 来管理 docker 容器中的文件

无图无真相,先放个效果图: 背景 使用 docker 来跑一些服务很方便,但是有的时候想管理容器里面的文件却很麻烦 -- 一般常规做法有3种: 通过数据卷或数据卷容器的方式 启动容器的时候时候启动 vsftpd 或者 sshd 等服务,并开启端口映射,然后通过 ftp/sftp 连上去管理 进入容器的终端,通过命令行管理 但是这些做法都有一定的缺陷和不便: 1和2都是需要在启动容器的时候做一些配置,如果容器已经启动了就歇菜了.而且2需要额外的端口映射,占用主机的端口.3的做法比较 geek ,而

隔离 docker 容器中的用户

笔者在前文<理解 docker 容器中的 uid 和 gid>介绍了 docker 容器中的用户与宿主机上用户的关系,得出的结论是:docker 默认没有隔离宿主机用户和容器中的用户.如果你已经了解了 Linux 的 user namespace 技术(参考<Linux Namespace : User>),那么自然会问:docker 为什么不利用 Linux user namespace 实现用户的隔离呢?事实上,docker 已经实现了相关的功能,只是默认没有启用而已.笔者将在

在 docker 容器中捕获信号

原文:在 docker 容器中捕获信号 我们可能都使用过 docker stop 命令来停止正在运行的容器,有时可能会使用 docker kill 命令强行关闭容器或者把某个信号传递给容器中的进程.这些操作的本质都是通过从主机向容器发送信号实现主机与容器中程序的交互.比如我们可以向容器中的应用发送一个重新加载信号,容器中的应用程序在接到信号后执行相应的处理程序完成重新加载配置文件的任务.本文将介绍在 docker 容器中捕获信号的基本知识. 信号(linux) 信号是一种进程间通信的形式.一个信

【原创】大叔经验分享(71)docker容器中使用jvm工具

java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只有jdk版本才有jvm工具,所以可以直接使用jdk版本的openjdk: 比如常用的tomcat镜像则没有jdk和jre选择,默认使用都是jre,所以没有jvm工具,tomcat镜像中的jdk目录如下: # ls /usr/lib/jvm/java-1.8-openjdk bin jre lib #

在CentOS 6.x中支持exfat格式的U盘(移动硬盘)

参考资料:http://linux.cn/article-1503-1.html CentOS系列一直没有默认支持使用exfat格式的大容量U盘(移动硬盘),但可以通过添加fuse-exfat模块来支持,步骤如下: 1.下载fuse-exfat支持软件: exfat支持是通过fuse模块的方式支持的,其项目地址是: https://code.google.com/p/exfat/  ,当前版本是:1.0.1. 目前exfat的支持已经是全功能支持,支持读写. 可以下载源代码包,并自行使用scon

[docker] 管理docker容器中的数据

之前我们介绍了Docker的基本概念(前面的没翻译...),了解了如何使用Docker镜像进行工作,并且学习了网 络和容器之间的链接.这一节我们将讨论如何管理容器中及容器之间的数据. 我们将查看下面两种管理Docker中数据的主要方法. 数据卷 数据卷容器 数据卷 一个数据卷就是经过特殊设计的,在一个或多个容器中通过UFS文件系统提供的一些特性 实现数据持久化或共享. 数据卷可以在容器之间共享和重复利用 可以对数据卷里的内容直接进行修改 对镜像的更新不会改变数据卷的内容 卷会一直持续到没有容器使

在docker容器中运行hello world!

在docker容器中运行hello world! docker容器可以理解为在沙盒中运行的进程.这个沙盒包含了该进程运行所必须的资源,包括文件系统.系统类库.shell 环境等等.但这个沙盒默认是不会运行任何程序的.你需要在沙盒中运行一个进程来启动某一个容器.这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止. 目标: 在我们刚刚下载的镜像中输出"hello word".为了达到这个目的,我们需要在这个容器中运行"echo"命令,输出"