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]