docker容器开启ssh服务

http://www.dtmao.cc/news_show_703007.shtml

Step1

利用CentOS基础镜像,创建一个docker容器,主要这里要指定端口映射,必须要映射到容器内的22端口,否则无法用ssh登录容器。

docker run -it -p 3361:22 -p 3362:8888 centos /bin/bash

注意:这里的3361和3362端口你服务器需要开放,不然后面也会无法登录。我用的是阿里云服务器,是在防火墙中开放了这两个端口

Step2

安装 openssl, openssh-server 等工具

yum install -y openssl openssh-server

Step3

如果要正常启动ssh服务,/var/run/sshd 必须存在,手动创建并启动ssh服务:

mkdir -p /var/run/sshd
/usr/sbin/sshd -D & 

此时可能会出现如下报错:

在这里插入图片描述
解决方法:在docker容器内的命令行依次输入如下代码

ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''  
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

再次执行

/usr/sbin/sshd -D &

在这里插入图片描述
成功开启ssh服务

查看sshd是否监听22端口

yum install -y net-tools
netstat -apn | grep ssh

在这里插入图片描述

Step4

修改ssh配置文件

在docker容器内的命令行输入:vim /etc/ssh/sshd_config

设置ssh的端口:Port 22

在这里插入图片描述
将 PermitRootLogin 的 no 改为 yes,即允许root用户登录

在这里插入图片描述

Step5

重启ssh服务

/usr/sbin/sshd -D &

用上面方法重启,可能还是无法用root登录

如果不行,可以换下面命令进行ssh重启

/etc/init.d/ssh restart

查看sshd是否监听22端口

在这里插入图片描述

Step6

给docker容器添加密码

我们必须要给docker容器设置密码,后面才能以ssh的方式登录容器

在容器内使用 passwd 命令创建密码,若没有这个命令,则用 yum install passwd 进行安装

在这里插入图片描述

实战演练

利用ssh直接登录docker容器

ssh root@10.11.6.14 -p 3361

这里的root指的是docker容器的root用户,不是服务器的用户名,密码是你上面设的docker容器的密码

Pycharm远程连接docker容器

在这里插入图片描述

常见问题:Connection refused

出现Connection refused大概率是因为你的docker容器被stop了,那ssh服务自然没有开启,那就不能登录

解决方法:docker start 容器,然后用 /etc/init.d/ssh restart 开启ssh服务

开启成功的话会显示下面内容

Restarting OpenBSD Secure Shell server sshd [OK]

posted on   1763392456  阅读(963)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示