SSH 主机密钥对需要密码,导致 ProFTPD 失败

SSH 主机密钥对需要密码,导致 ProFTPD 失败

我需要使用 ProFTPD 创建一个 docker 镜像并将其用作 SFTP 服务器。
显然,我需要 SSH 主机密钥才能工作,但我不想每次构建镜像时都创建新密钥。
如果我使用以下命令创建 SSH 主机密钥:

ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa

在正在运行的容器内无需提供密码即可完美运行。
我只需使用proftpd命令即可启动我的 SFTP 服务器。

COPY但是,在我的主机上以完全相同的方式生成密钥,然后使用指令将其复制到 docker 镜像中,Dockerfile在尝试在容器中启动 ProFTPD 时会导致以下错误:

Wrong passphrase for this key.  Please try again.

Wrong passphrase for this key.  Please try again.

Wrong passphrase for this key.  Please try again.
2018-11-13 11:48:21,196 2771999b0891 proftpd[53924] 2771999b0891: mod_sftp/1.0.0: error reading passphrase for SFTPHostKey '/etc/ssh/ssh_host_rsa_key': (unknown)
2018-11-13 11:48:21,197 2771999b0891 proftpd[53924] 2771999b0891: mod_sftp/1.0.0: unable to use key in SFTPHostKey '/etc/ssh/ssh_host_rsa_key', exiting

我在这里遗漏了什么?

编辑:根据要求的 Dockerfile:

FROM alpine:latest

COPY etc/apk/repositories /etc/apk/repositories

COPY etc/ssh/ /etc/ssh/

COPY etc/proftpd/ /etc/proftpd/

RUN apk upgrade --no-cache

RUN apk add --no-cache \
    proftpd \
    proftpd-mod_sql_postgres \
    proftpd-mod_sftp_sql

ENTRYPOINT proftpd

/etc/ssh容器内的内容如下:

>>ls -la /etc/ssh
total 28
drwxr-xr-x    1 root     root          4096 Nov 13 13:47 .
drwxr-xr-x    1 root     root          4096 Nov 13 13:46 ..
-rw-------    1 root     root          1393 Nov 13 13:57 ssh_host_dsa_key
-rw-r--r--    1 root     root           609 Nov 13 10:11 ssh_host_dsa_key.pub
-rw-------    1 root     root          1831 Nov 13 13:57 ssh_host_rsa_key
-rw-r--r--    1 root     root           401 Nov 13 10:11 ssh_host_rsa_key.pub
-rw-r--r--    1 root     root          3177 Nov  7 18:21 sshd_config

答案1

我认为这可能是因为默认加密级别不同。如果您在所有情况下都声明了字节数,我认为问题就不会出现。

就像说:

ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa -b 1024
vs
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa -b 2048
vs
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa -b 4096

答案2

事实证明,无论出于什么原因,在 MacOS 主机上生成的密钥都导致了此问题。
但在 Linux 主机上生成的密钥按预期工作 - 意外请求的密码短语没有问题。

我不确定为什么会发生这种情况,但这种情况是可以重现的。我认为无论操作系统如何,DSA 和 RSA 密钥都是兼容的。

如果有人能找到更完整的解释,我将不胜感激,但对我来说,问题已经解决了 - 尽管解决方案只是一种解决方法,没有正确理解问题。

相关内容