出于某种原因,我在 Docker 容器中运行的 dropbear sshd 告诉我Bad password attempt
,即使我已经多次检查用户名和密码都是 100% 正确的。
supervisord
使用以下命令启动 Dropbear :
/usr/local/sbin/dropbear -F -E -p 2222
由用户和组“mysticbbs”。dropbear 运行时没有出现错误..
但是,当我尝试从主机 ssh 进入容器时,使用:
ssh -o UserKnownHostsFile=/dev/null localhost -l mysticbbs -p 2222
('-o UserKnownHostsFile=/dev/null' ,以防止存储在测试/构建 dockerfile 期间生成的大量不同密钥)
..ssh,如预期的那样,给了我:
ECDSA 密钥指纹为 SHA256:0WadKddpa*[..blabla.]* 您确定要继续连接(是/否)吗?
然后我被要求输入密码。但是无论我是否输入或粘贴它,100% 正确..我仍然得到并 dropbear 用..Permission denied, please try again.
记录尝试Bad password attempt for 'mysticbbs' from 172.17.0.1:35152
- 我尝试设置不同/更复杂的密码
- 尝试
dbclient
从容器内部使用相同的用户 dropbear 运行 ssh,并且在不使用 supervisord 的情况下运行 dropbear,没有区别。(Bad password attempt for 'mysticbbs' from 127.0.0.1:48110
) .. - /etc/dropbear 文件夹(和密钥)被 chowned 到 'mysticbbs:mysticbbs' 和 chmod 到 700
- 无论我是使用
dropbear
来自 alpine 的 apk repo (v2018.76-r2)还是从 dropbear.nl 源构建它(v2018.76 和 v2017.75 都经过测试),都会出现同样的问题。 - 删除键并使用参数手动运行 dropbear
-R
没有区别。 - 在https://github.com/mkj/dropbear找到了一个符号,但我看不出它是如何应用的,因为用户尝试 ssh与运行 dropbear的用户相同:
>
如果服务器以非 root 身份运行,您很可能无法分配 pty,并且除了运行守护程序的用户(显然)之外,您无法以任何用户身份登录。影子密码也将无法作为非 root 用户使用。
- 影子密码可能是罪魁祸首..
密钥是在 docker 构建期间生成的,具有以下内容:
export RSA_KEYFILE=/etc/dropbear/dropbear_rsa_host_key
export DSS_KEYFILE=/etc/dropbear/dropbear_dss_host_key
export ECDSA_KEYFILE=/etc/dropbear/dropbear_ecdsa_host_key
dropbearkey -t dss -f $DSS_KEYFILE
dropbearkey -t rsa -f $RSA_KEYFILE
dropbearkey -t ecdsa -f $ECDSA_KEYFILE
chown -R mysticbbs:mysticbbs /etc/dropbear
chmod -R 700 /etc/dropbear
mysticbbs 用户的密码是在 docker build 期间设置的:
passwd mysticbbs -d '<password>' -u
我错过了什么?...
正如@michael-hampton在评论中指出的那样,以及在https://github.com/mkj/dropbear的注释:
当以非 root 用户身份运行 dropbear 时,我的问题似乎确实出现在影子密码上。
在我的具体情况下,在alpine:3.9/BusyBox下,将
root添加到我的“mysticbbs”组并根据需要删除 root 权限,而不是让root以外的用户可以访问,这似乎是一个更有效的解决方案和解决方法(例如,将“mysticbbs”或专用系统用户添加到“影子”组(?)..我什至不打算测试它。虽然我想这也可能是一个潜在的解决方法。)。/etc/shadow
编辑:将运行 dropbear 的用户添加到
shadow
组似乎更容易..毕竟/etc/shadow
仍然是chmod 640 (仅对root用户可写,但对影子组可读)(注意:可能不推荐在高安全性是重中之重的情况下)