sshd_config不会通过Yocto元层被覆盖,因此无法连接到板



系统

  • 硬件:PHYTEC PHYBARD Mira板
  • 处理器:NXP i.MX6 Quad
  • Yocto/OE分支:warrior

初始步骤

  1. 我有一个名为meta-mylayer的自定义层,我希望在其中对硬件上的图像进行更改。meta-yogurt层由Phytec提供,由他们的应用程序和其他板相关软件组成。

  2. 在我的层中,我有以下密码配方:

    # meta-mylayer/recipe-images/images/phytec-headless-image.bbappend
    inherit extrausers
    EXTRA_USERS_PARAMS = "usermod -P yocto2020 root;"
    

执行bitbake -k phytec-headless-image并通过串行电缆连接板后,我可以使用root:yocto2020凭据登录板,但在ssh -l root <StaticIPBoard>时,我的访问一直被拒绝。

基于这个toradex论坛线程,我在所有元层所在的目录中执行以下命令:

find . -name "*sshd_config*"

结果如下:

./meta-yogurt/recipes-connectivity/openssh/openssh/sshd_config
./poky/meta/recipes-connectivity/openssh/openssh/sshd_config

因此,我从meta-yogurt层复制sshd_config,并取消注释以下两行:

AllowRootLogin Yes
PasswordAuthentication Yes

我所在层的配方结构如下:

meta-mylayer/recipes-connectivity/
└── openssh
├── openssh
│   └── sshd_config # uncommented the necessary lines
└── openssh_%.bbappend

openssh_%.bbappend文件的内容如下:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

层已经在CCD_ 10中,所以我继续进行CCD_。

命令ssh -v -l root <STATICIP>抛出以下错误:

$ ssh -v -l root 192.168.3.11
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 192.168.3.11 [192.168.3.11] port 22.
debug1: Connection established.
debug1: identity file /home/des/.ssh/id_rsa type 1
debug1: identity file /home/des/.ssh/id_rsa-cert type -1
debug1: identity file /home/des/.ssh/id_dsa type -1
debug1: identity file /home/des/.ssh/id_dsa-cert type -1
debug1: identity file /home/des/.ssh/id_ecdsa type -1
debug1: identity file /home/des/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/des/.ssh/id_ed25519 type -1
debug1: identity file /home/des/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.9
debug1: match: OpenSSH_7.9 pat OpenSSH* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-sha1-etm@openssh.com none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 82:25:3c:5a:49:5e:61:ba:7c:0d:6b:b9:1d:78:9c:7c
debug1: Host '192.168.3.11' is known and matches the ECDSA host key.
debug1: Found key in /home/des/.ssh/known_hosts:46
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/des/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/des/.ssh/id_dsa
debug1: Trying private key: /home/des/.ssh/id_ecdsa
debug1: Trying private key: /home/des/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password
root@192.168.3.11's password:
debug1: Authentications that can continue: publickey,password,keyboard-interactive
Permission denied, please try again.

sshd_config文件

在板上通过串行端口我做

cat /etc/ssh/sshd_config | grep -i "rootlogin"

并且CCD_ 14选项仍然被注释掉!

其他备选方案

我尝试了devtool modify openssh,编辑了sshd_config,并用SRC_URI_append向我的层添加了补丁,结果仍然相同。

p.S.local.confEXTRA_IMAGE_FEATURES += "debug-tweaks"中被注释掉。

问题

需要做些什么才能通过SSH在我的Yocto层中使用密码集root用户到达板?

问题是EXTRA_IMAGE_FEATURES += "debug-tweaks"。我提到它在conf/local.conf中被评论掉了。

解决方案是取消注释,以便产生效果。

之前

conf/local.conf

#EXTRA_IMAGE_FEATURES += "debug-tweaks"

之后

EXTRA_IMAGE_FEATURES += "debug-tweaks"

然后使用CCD_ 23和CCD_