/ bin / sh:/ usr / sbin / sshd-keygen:没有这样的文件或目录

时间:2020-03-29 13:58:40

标签: linux docker docker-compose centos7

我对linux和docker概念完全陌生

在Windows计算机中,我在虚拟框中启动centos7

运行docker-compose build时我得到

 /bin/sh: /usr/sbin/sshd-keygen: No such file or directory

如何纠正

我试图创建一个远程用户

docker-compose.yml

version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
    volumes:
      - "$PWD/jenkins_home:/var/jenkins_home"
    networks:
      - net
  remote_host:
    container_name: remote-host
    image: remote-host
    build:
      context: centos7
    networks:
      - net
networks:
   net:
DockerFile

FROM centos

RUN yum -y install openssh-server

RUN useradd remote_user && \
    echo "Thevenus987$" | passwd remote_user --stdin && \
    mkdir /home/remote_user/.ssh && \
    chmod 700 /home/remote_user/.ssh

COPY remote-key.pub /home/remote_user/.ssh/authorized_keys

RUN chown remote_user:remote_user -R /home/remote_user/.ssh && \
    chmod 600 /home/remote_user/.ssh/authorized_keys

RUN /usr/sbin/sshd-keygen

CMD /usr/sbin/sshd -D

10 个答案:

答案 0 :(得分:1)

  1. 将FROM更改为centos:7
  2. 将RUN / usr / sbin / sshd-keygen替换为RUN ssh

答案 1 :(得分:1)

在 Dockerfile 中

Change RUN /usr/sbin/sshd-keygen // Centos8 不接受此命令

to RUN ssh-keygen -A // 这有效。

我希望这个解决方案工作正常。

答案 2 :(得分:0)

将基本图像FROM centos更改为FROM centos:7,它将起作用

答案 3 :(得分:0)

Dockerfile应该是这样的:

FROM centos:7

   RUN yum -y install openssh-server && \
    yum install -y passwd && \  #Added
    yum install -y initscripts  #Added 

RUN useradd remote_user && \
  echo "1234" | passwd remote_user --stdin && \
  mkdir /home/remote_user/.ssh && \
  chmod 700 /home/remote_user/.ssh

COPY remote-key.pub /home/remote_user/.ssh/authorized_keys

RUN chown remote_user:remote_user -R /home/remote_user/.ssh/ && \
    chmod 600 /home/remote_user/.ssh/authorized_keys

RUN /usr/sbin/sshd-keygen

#CMD /usr/sbin/sshd -D
CMD ["/usr/sbin/sshd", "-D"]

答案 4 :(得分:0)

问题在于您的Dockerfile中的这一行:

RUN /usr/sbin/sshd-keygen

这是当执行此行时得到的结果:/etc/rc.d/init.d/functions:没有这样的文件或目录。 / usr / sbin / sshd-keygen:找不到命令。

此init.d / functions文件对于不同的Linux发行版是不同的。它特定于您正在运行的任何发行版。该文件包含/ etc / init中存储的大多数或所有Shell脚本要使用的功能。 d目录。

要自己尝试,只需从Docker中心拉出CentOS:7映像,并从Dockerfile中测试您的RUN步骤,如下所示:

docker container run -i -t -d --name test centos:7

docker exec -it test bash

cd /etc/rc.d/init.d

ls -a

此目录中没有称为函数的文件。

在CentOS:7 Docker映像中,您只需安装软件包初始化脚本即可安装此脚本,因此请将这些行添加到Dockerfile中:

FROM centos:7

RUN yum install -y initscripts

答案 5 :(得分:0)

只需使用FROM centos:7(而不是使用centos8 基础镜像)

yum install -y 初始化脚本

注意:更新的 initscripts 错误修复增强包修复了几个错误,并添加了一项增强功能,现在可用于 Red Hat Enterprise Linux 6/7。

您根本不需要删除或调整以下行

运行 /usr/sbin/sshd-keygen

它会 100% 工作..

要了解有关 initscripts 错误修复增强功能的更多信息: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/6.5_technical_notes/initscripts

答案 6 :(得分:-1)

1) 在Dockerfile中更改:

RUN /usr/sbin/sshd-keygen

RUN /usr/bin/ssh-keygen

2)或尝试

RUN sshd-keygen

如果包含并且存在于$ PATH中的任何位置,它将执行。

答案 7 :(得分:-1)

默认情况下,FROM centos提取最新版本,其中不包含sshd-keygen。

您需要将Dockerfile更改为:

FROM centos:7
  ...
    && yum install -y initscripts \
    && /usr/sbin/sshd-keygen

CMD ["/usr/sbin/sshd", "-D"]

答案 8 :(得分:-1)

只是centos的变化 来自centos:7

发生此错误的原因是,在docker centos运行centos7和现在运行centos 8之前

答案 9 :(得分:-1)

试试下面的命令而不是 RUN /usr/sbin/sshd-keygen 并且正如其他人指出的那样使用: FROM centos:7

RUN ssh-keygen -A

相关问题