1 问题背景
v853有客户需要使用到ssh服务,使用该服务来进行文件传输或者系统登陆。
2 问题描述
v853有客户需要使用到ssh服务,使用该服务来进行文件传输或者系统登陆。但在开发的过程中发现ssh的基本功能使用不了,包括使用ssh进行远程登录,和使用scp进行文件传输。
3 解决办法
3.1 编译ssh包,如下配置后进行编译即可编译ssh相关工具
make menuconfig
-*- 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)等原因需要根据实际情况进行修改(可以参考上面的做法)。