我正在开发一个嵌入式板(i.MX6),上面有一个基于Yocto的嵌入式Linux。到目前为止,我使用Dropbear作为SSH服务器。但是,Dropbear不提供我需要的SFTP服务器。因此,我从Dropbear切换到OpenSSH(从标准的Poky源代码构建它,并通过opkg安装它)。
但是,从那时起,我无法再通过SSH登录到主板,因为服务器要求输入密码,我不知道。唯一的用户是root,它没有配置密码(这仍然是正确的,因为我可以通过RS232在本地登录而不会出现问题)。为什么OpenSSH要求输入密码?我怎样才能删除它?
我想也许在/etc/ssh
的一个私钥中设置了一个密码短语:
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key
所以我分别为他们每个人做了ssh-keygen -p -f /etc/ssh/ssh_host_rsa_key
,但没有帮助。
这是sshd_config文件的基本部分:
# grep '^[^#]' /etc/ssh/sshd_config
Protocol 2
PermitRootLogin yes
AuthorizedKeysFile .ssh/authorized_keys
UsePrivilegeSeparation sandbox # Default for new installations.
Compression no
ClientAliveInterval 15
ClientAliveCountMax 4
Subsystem sftp /usr/lib/openssh/sftp-server
有什么想法吗?
你确定你的IMAGE_FEATURES
或EXTRA_IMAGE_FEATURES
中有debug-tweaks
吗?
如果是这样,ROOTFS_POSTPROCESS_COMMAND
应包括ssh_allow_empty_password();
,而又应将PermitEmptyPasswords yes
设置为/etc/ssh/sshd_config
和/etc/ssh/sshd_config_readonly
。这应该允许您在OpenSSH中使用空密码。
如果您的EXTRA_IMAGE_FEATURES
中有"调试调整",则密码将为空:这对于开发映像可能没问题。
如果你想有一些安全性,你可以添加一个将公钥安装到/root/.ssh/authorized_keys 的配方,或者在映像配方或本地配置中使用 extrausers 类来设置密码。