小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-09-30 / 17 阅读
0
0

docker的centos容器无法启动sshd服务以及systemctl,scp无法使用解决方式

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_*
  1. 重新生成新的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 ''参数表示生成密钥时不设置密码。

  2. 重新启动SSH服务
    一旦密钥生成完成,尝试重新启动SSH服务:

    sudo systemctl restart sshd
    
  3. 检查 sshd服务状态
    再次检查服务的状态,以确认它现在是否成功启动:

    sudo systemctl status sshd
    

如果你按照这些步骤操作,sshd应该能够成功加载必要的主机密钥并正常启动。如果仍然遇到问题,请再次提供更新的错误信息或输出,我会进一步帮助你。


评论