ubuntu 配置ssh(docker)

一、docker配置ssh

1、主要设置

#设置登录密码
apt-get install passwd
passwd
#安装ssh
apt-get install openssh-server
#配置 shh:生成 ssh 容器的公钥、私钥
#注意:生成过程中需要两次回车,以进行下一步。
cd /etc/ssh
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key
#创建允许外部访问的认知文件
mkdir -p ~/.ssh
> ~/.ssh/authorized_keys
#编写容器的服务启动脚步
vim /run.sh
#写入以下内容退出:下面内容不对,无法执行,看三(注意事项)
#!/bin/bash
/usr/sbin/sshd -D
#设置执行权限
chmod +x /run.sh
#退出
exit

2、启动容器

如果不能启动,去掉/run.sh,改成/bin/bash,然后手动执行/run.sh中内容

docker ps -a
docker commmit 容器id 新镜像
docker images
#-p 2222:22 将容器的22端口服务映射到宿主机的 2222 端口上
docker run -d --name 容器名称 ... -p 2222:22 镜像名称 /run.sh  

3、本地ssh连接容器

ssh root@127.0.0.1 -p 2222

4、注意事项

1)将容器commit保存为镜像,然后再次启动时,执行/run.sh会失败。进入容器后,手动执行run.sh中内容,又会报错,解决方法如下

#报错如下
root@3f912011817b:/usr/sbin# /usr/sbin/sshd 
Missing privilege separation directory: /run/sshd
#解决方法如下
mkdir /run/sshd
/usr/sbin/sshd 
ps -e | grep ssh
#显示内容如下
  4137 ?        00:00:00 sshd

2)如果root连接容器,需要修改: vim /etc/ssh/sshd_config

 

 

 

 

posted @ 2022-03-12 20:12  kuaqi  阅读(1039)  评论(0编辑  收藏  举报