docker的centos容器无法启动sshd服务以及systemctl,scp无法使用解决方式
首先启动docker容器需要给予特权模式
docker run -itd -v /opt/software:/opt/software -p 12303:22 --hostname master01 --name master01 --privileged=true --network hadoop hadoop_server /sbin/init
进入容器首先解决systemctl的问题
docker exec -it master01 /bin/bash
安装systemd
yum install -y systemd
发现systemctl无法使用
报错如下
Failed to get D-Bus connection: Operation not permitted
可执行以下方式
mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
chmod +x /usr/bin/systemctl
又发现没有service命令
bash: service: command not found
输入
yum install initscripts -y
安装openssh服务
yum install -y openssh-server openssh-clients openssh
systemctl可以使用了但是sshd服务还是无法启动
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service, enabled)
Active: failed (failed)
尝试使用dev模式启动sshd
/usr/sbin/sshd -d
报错如下
debug1: sshd version OpenSSH_7.4, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: key_load_private: No such file or directory
debug1: key_load_public: No such file or directory
Could not load host key: /etc/ssh/ssh_host_rsa_key
debug1: key_load_private: No such file or directory
debug1: key_load_public: No such file or directory
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
debug1: key_load_private: No such file or directory
debug1: key_load_public: No such file or directory
Could not load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.
问题在于你的系统缺少SSH守护进程需要的主机密钥文件。sshd无法加载主机密钥,因此无法启动。这些密钥对于SSH服务的安全性至关重要,用于在SSH会话中验证服务器的身份。
1.删除旧的密钥文件(如果存在):
sudo rm /etc/ssh/ssh_host_*
-
重新生成新的SSH主机密钥:
你可以使用ssh-keygen命令来生成新的密钥。以下是生成所有推荐类型主机密钥的命令:sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' sudo ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' sudo ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''这些命令将创建RSA, ECDSA, 和 ED25519类型的密钥,并将它们存储在默认位置。
-N ''参数表示生成密钥时不设置密码。 -
重新启动SSH服务:
一旦密钥生成完成,尝试重新启动SSH服务:sudo systemctl restart sshd -
检查
sshd服务状态:
再次检查服务的状态,以确认它现在是否成功启动:sudo systemctl status sshd
如果你按照这些步骤操作,sshd应该能够成功加载必要的主机密钥并正常启动。如果仍然遇到问题,请再次提供更新的错误信息或输出,我会进一步帮助你。