海思3559万能平台搭建:在线调试2ssh的移植部署

简介: 在线调试2ssh的移植部署

前言

 gdb和gdbserver的安装是在线调试的基础,熟悉命令行调试的在这一阶段就可以开心debug了,距离vscode的图形化界面还是有点一段距离,Remote Development插件是依赖ssh的,我们还需要确保板子的ssh功能正常启用。一般来说busybox可以直接配置,出于普遍性考虑这里也自己总0搭建

ssh

 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

需要我们交叉编译的软件包叫openssh,依赖zlib和ssl库才能编译和运行

zlib

 可以参考之前移植OSD时的配置

openssl

https://www.openssl.org/source/old/下载
./Configure --prefix=/home/book/Downloads/hi3995_tools/Hi3559AV100_SDK_V2.0.3.1/mpp/openssh/lib/openssl1.0.2 os/compiler:aarch64-himix100-linux-gcc
make
make install

 编译前在MakeFile 的 cflag 添加 -fPIC,否则生成的libcrypto.a的stderr函数不可用,configure ssh的时候失败

openssh

./configure --host=aarch64 --prefix=/home/book/Downloads/hi3995_tools/Hi3559AV100_SDK_V2.0.3.1/mpp/openssh/ --with-zlib=/home/book/Downloads/hi3995_tools/Hi3559AV100_SDK_V2.0.3.1/mpp/zlib-1.2.11 --with-ssl-dir=/home/book/Downloads/hi3995_tools/Hi3559AV100_SDK_V2.0.3.1/mpp/openssh/lib/openssl1.0.2/include --disable-etc-default-login --disable-strip --without-openssl-header-check CC=aarch64-himix100-linux-gcc

报错1,找不到ssl的头文件,

 “OpenSSL headers missing - please install first or check config.log”

 查看config.log,修改configure文件的头文件为绝对位置(先在ssl的安装目录中find一下)

 如下 ac_fn_c_check_header_mongrel “$LINENO” "/root/3531dv2/ssh/lib/openssl-1.0.2p/include/openssl

 (如果host为aarch64-himix100-linux也会有这样的问题,改为aarch64则可以正常编译通过)

报错2,找不到openssl ctypto ,

 “Can’t find recent OpenSSL libcrypto”

 应该在编译 ssl 的时候添加 -fPIC

make

 openssh不用make install

报错3,config不支持64位(参考OSD1)

 “Invalid configuration aarch64-linux-gnu’: machineaarch64’ not recognized”

 参考 https://blog.csdn.net/Brouce__Lee/article/details/96999883

 wget -O config.guess ‘http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD

 wget -O config.sub ‘http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD

其他注意事项

【如果sshd启动失败:】

 1、需要使用全局目录启动:

~ # /usr/local/sbin/sshd

 2、启动配置文件和密码文件,不存在或者权限不对:

 修改相应目录和文件的权限。

 3、密码文件还是打开失败,关于密码的:

 最终解决办法是,网上找一个教程能完整通过的版本,

 最后使用的版本是openssh-7.7p1.tar.gz 和openssl-1.0.2p.tar.gz

【需要:】

 板卡目录需要修改empty的所属用户和组

/var # chown root.root empty -R

https://blog.csdn.net/weixin_44604730/article/details/105765331

【需要:】

 sshd_config ,和密钥文件需要修改权限,大概是只能root用户有读写权限。网上教程很多关于权限的说明

【如果root用户登录失败:】

 1、修改配置文件sshd_config 这个字段,并把 ’#‘ 去掉

  PermitRootLogin yes

 2、密码记错了

 在串口终端上 修改密码,命令: passwd root,则提示输入两次root用户的密码

【如果sftp传输文件失败:】

 1、可以查看 /usr/local/etc # sshd_config 配置文件中的

#Subsystem sftp /usr/local/libexec/sftp-server

 这一行的sftp-server的程序目录是否正确。

 作者使用本方法依然不成功,原因未知,不深究,方法2也够用。

 2、如果还是没解决,则

 最终使用了 内部sftp

 修改成了 Subsystem sftp internal-sftp

 https://blog.csdn.net/bon_mot/article/details/78615713

测试

 ssh的运行需要基于zlib的动态库,需要将lib目录下的libz.so.1cp到板子的/usr/lib目录下

 (这个忘记cp会有报错提示)

测试ssh

SHA256:4yvSZI7csV9FK78CWM0rqTmGAwb2tR7NZH0XFt09Vx0 root@(none) The key's randomart image is:+..-[RSA 2048]...-+
.EB
0.本.0
+o . 0S..oo.
0 B.*..+.@车.0.=告 0. o to
+----[SHA256]-----+
/mnt/openssh/keygen # ping 192.168.119.128
PING 192.168.119.128 (192.168.119.128): 56 data bytes
64 bytes from 192.168.119.128: seq=0 ttl=64 time=1.580 ms64 bytes from 192.168.119.128: seg=1 ttl=64 time=1.460 ms^C
... 192.168.119.128 ping statistics
2 packets transmitted, 2 packets received packet loss 
round-trip min/avg/max =1.460/1.520/1.580 ms/mnt/openssh/keygen # vi /etc/passwd
/mnt/openssh/keygen # ssh book192.168.119.128
The authenticity of host"192.168.119.128(192.168.119.128)" can't be established. EcDsAkeyfingerprintisSHA256:dBZ23s3GeEzTdVULRAwSWKTYRQtmo7FUv6qmXrplsMg. Are you sure you want to continue connecting (yes/no)? yes
Warning:Permanently added "192.168.119.128(ECDSA) to the list of known hosts. book@192.168.119.128's password:
Welcome to ubuntu 16.04.7 LTs(GNU/Linux 4.15.0-142-generic x86 64)
* Documentation:  https://help.ubuntu.com 
Management: https://landscape.canonical.com 
Support:  https://ubuntu.com/advantage  
UA Infra: Extended Security Maintenance (ESM) is not enabled.
0 updates can be applied immediately.
248 additional security updates can be applied with uA Infra: ESM Learn more about enabling uA Infra: Esm service for ubuntu 16.04 at https://ubuntu.com/16-04
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Last login: Thu Jun 16 09:49:03 2022 from 192.168.119.100 book@www.100ask.org:~$ls
config.guess  Documents Music hostsback.tar.gz  Public  Videos  
Desktop config.sub  Downloads examples.desktop  Pictures  share Templates Hx--1024

测试sshd

 运行sshd,提示是需要绝对路径的

sshd re-exec requires execution with an absolute path
/mnt #sshd
sshd re-exec requires execution with an absolute path/ant #/mnt/openssh/openssh-7.6pl/sshd
/home/book/Downloads/hi3995_tools/Hi3559AV100_SDK_V2.0.3.1/mpp/ssh/etc/sshd_config: No o such file or directory

那就绝对路径运行,显示空文件

检查下环境,决定通过-f指定路径

/mnt/openssh/openssh-7.6p1/sshd -f /mnt/openssh/openssh-7.6p1/sshd_config

Privilege separation user sshd does not exit

/mnt#/mnt/openssh/openssh-7.6pl/sshd -f/mnt/openssh/openssh-7.6pl/sshd_config Privilege separation user sshd does not exist/mnt #

adduser sshd后即可解决

Could not load host key:

/mnt/ssh/etc3/mnt/openssh/openssh.7.6p1/sshd-f/mnt/openssh/openssh-7.6p1/ssh d contig
Couldnotload hostkev:/home/bock/Downloads/hi3995tools/Hi3559AV100 S0KV2.0.3.1/mop/ssh/etc/ssh host rsa kev Could notload hostkey:/home/book/Dwnloads/hi3995tools/Hi3559AV100_soK_V2.0.3.1/mpp/ssh/etc/ssh host dsa key Could not load host key:/home/book/Downloads/hi3995tools/Hi3559AV100_soKV2.0.3.1/mpp/ssh/etc/ssh host ecdsa key Could not load hostkey:/home/book/Downloads/hi3995tools/Hi3559AV100soKV2.0.3.1/mpp/ssh/etc/ssh host ed2ssi9 key
ehd.  no bartlour nurebin

 首先生成需要的key,

ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""

47f80462b1a144979abf5838eea6f8df.png

 接下来以绝对路径配置key的位置(sshd_config文件中)

HostKey /mnt/ssh/etc/ssh_host_rsa_key
HostKey /mnt/ssh/etc/ssh_host_dsa_key

 重启

/mnt/openssh/openssh-7.6p1/sshd -f /mnt/openssh/openssh-7.6p1/sshd_config restart

pc侧无法登陆permission denied(publickey,password,keyboard-interactive)

 再次修改config文件

# PermitRootLogin prohibit-password
PermitRootLogin yes

 还是没有奏效,想到系统是没有密码的,于是设置了root用户的密码再次登录

终于成功了

book@www.100ask.org:~$ ssh root@192.168.119.200 root@192.168.119.200's password: Welcome to hilinux.
None of nfsroot found in cmdline.

补充

 写笔记时有点晚了,有些细节有遗忘不太系统,海哥发了篇参考笔记非常详尽,还有疑惑时可以参考

https://www.freesion.com/article/7339867933/


相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
4月前
|
Devops 网络安全 Docker
百度搜索:蓝易云【DevOps系列文章之Docker部署web ssh工具sshwifty教程。】
同时,了解DevOps和Docker的基本原理和概念也对你进行部署和管理这样的工具非常有帮助。你可以进一步研究Docker容器化技术和相关的DevOps实践,以更好地理解和应用这些概念。
55 0
|
jenkins 网络安全 持续交付
Jenkins Publish over ssh部署(学习笔记十四)
Jenkins远程部署,一开始没有任何头绪,想了很多方案. 因为两台机器都是windows系统,所以想到publish over cifs, 但是这个网上资料太少,貌似只能内网使用。
3608 0
|
10月前
|
Cloud Native 网络安全 Docker
云原生之部署ssh连接工具webssh2
云原生之部署ssh连接工具webssh2
354 0
|
IDE Unix 编译器
iOS小技能:Makefile的使用(Makefile的规则、部署脚本、config管理ssh连接)
make是一个命令工具,是一个解释makefile中指令的命令工具。其本质是**文件依赖**,Makefile文件制定编译和链接所涉及的文件、框架、库等信息,将整个过程自动化。
312 0
|
安全 关系型数据库 MySQL
CentOS7云主机部署Fail2ban阻断SSH暴力破解
CentOS7云主机部署Fail2ban阻断SSH暴力破解
299 0
CentOS7云主机部署Fail2ban阻断SSH暴力破解
|
数据可视化 安全 Unix
【Git|GitHub|SSH|Sourcetree 下篇】GitHub|Sourcetree|SSH部署及Git-flow工作流
GitHub|Sourcetree|SSH快速部署、git-flow工作流、Remote Repository的克隆和推送
226 0
【Git|GitHub|SSH|Sourcetree 下篇】GitHub|Sourcetree|SSH部署及Git-flow工作流
|
网络协议 安全 Linux
把SSH客户端放在网页上运行?这个开源项目教你部署实现
把SSH客户端放在网页上运行?这个开源项目教你部署实现
把SSH客户端放在网页上运行?这个开源项目教你部署实现
|
jenkins Linux 应用服务中间件
Publish over SSH部署应用到linux
Publish over SSH部署应用到linux
Publish over SSH部署应用到linux
|
IDE Unix 编译器
Makefile的使用教程:Makefile的规则、部署脚本、config管理ssh连接
Makefile的使用教程:Makefile的规则、部署脚本、config管理ssh连接
466 0
Makefile的使用教程:Makefile的规则、部署脚本、config管理ssh连接
|
网络安全 数据安全/隐私保护 Shell
多SSH KEY切换部署同步代码
一般情况下,我们会单独生成一个ssh-key公钥用于备份数据,而不是和其他公钥混合使用,避免因为因为某些操作不安全,造成代码丢失。当然你也可以选择一个其他账户操作也是可以的,但如果选择其他账户了,也就没有这篇文章的存在了。还是回到多个私钥的问题上,默认情况下,RSA算法的 ssh 私钥文件名为 id_rsa,我们可以通过ssh-keygen生成 ssh key 的时候可以指定其名称。 当有多个SSH KEY存在的时候,如何指定某个ssh读取某个私钥呢?本文就提供一个解决方案。
789 0
多SSH KEY切换部署同步代码