全志科技
直播中

文小二

2年用户 652经验值
擅长:嵌入式技术 处理器/DSP 控制/MCU
私信 关注
[经验]

全志V853芯片 如何支持ssh功能?

1 问题背景

v853有客户需要使用到ssh服务,使用该服务来进行文件传输或者系统登陆。

2 问题描述

v853有客户需要使用到ssh服务,使用该服务来进行文件传输或者系统登陆。但在开发的过程中发现ssh的基本功能使用不了,包括使用ssh进行远程登录,和使用scp进行文件传输。

3 解决办法

3.1 编译ssh包,如下配置后进行编译即可编译ssh相关工具

make menuconfig
 --> network
   --> ssh
     -*- openssh-client
     <*> openssh-client-utils
     -*- openssh-keygen
     < > openssh-moduli
     <*> openssh-server
     <*> openssh-server-pam

3.2 添加sshd账号

1.系统起来后启动/usr/sbin/sshd服务可能会失败,因为此时没有sshd账号,因此需要创建一个sshd账号

2.在/etc/passwd文件中添加sshd账号信息,如下:

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/bin/ash

注意:该信息需要根据系统实际情况进行改动,例如在v853中使用的是ash shell,但其他方案中不一定使用的是ash shell

3.使用ssh-keygen命令创建3个key

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

4.mkdir /var/empty/sshd --> 创建sshd账号的工作目录

5.使用passwd命令给sshd账号添加密码。

6.在小机端执行命令/usr/sbin/sshd启动ssh服务

7.执行完上面的操作后即可在pc端使用ssh工具使用sshd账号远程登录小机端了。

3.3 以root用户登录小机端

上面的操作只能以sshd账号登录到小机端,sshd账号权限有限,在开发阶段很多操作都做不了,因此一般需要使用root用户进行登录,

执行下面的操作后即可以root用户进行登录

1.使用passwd命令给root账号添加密码,一般新烧的系统root账号是没有设定密码的,在tina系统中使用passwd命令修改的密码是保存在/etc/passwd文件中的。

2.rm /etc/shadow(tina v853方案中要删除shadow里root账号信息,否则远程登录时使用的是shadow里的密码,但该密码不清楚是什么,该密码与/etc/passwd中的密码有覆盖现象)

3.修改/etc/ssh/sshd_config文件,添加PermitRootLogin yes配置项(该配置项是允许ssh以root账号登录)

4.如果此前sshd服务已开启,那么重启sshd服务,到此可以以root账号登录小机端了。

3.4 使用scp工具进行文件传输

在开发阶段一般scp要以root账户去进行文件的传输,否则很容易因文件权限的问题导致传输失败,因此在使用scp时最好已调通以root用户进行登录。

1.tina SDK中的package/network/openssh包里把scp和ssh工具名字修改为了openssh-ssh和openssh-scp了,在window系统中使用scp命令上传或下载文件会报错。

2.报错原因是小机端找不到scp工具,因此需要把package/network/openssh包里的openssh-scp工具名字修改回scp即可

(修改package/network/openssh/Makefile文件)

注意:该问题是pc端是window系统时发现的,其他系统作为登录端时可能不需要,可以自行进行测试。

4.问题总结

v853方案使用上面方法可以使用ssh功能,其他方案因系统(例如shell,busboy)等原因需要根据实际情况进行修改(可以参考上面的做法)。

更多回帖

发帖
×
20
完善资料,
赚取积分