arm sshd交叉编译及部署

资源地址:https://www.openssh.com/portable.html#http

openssh-8.0p1.tar.gz

编译方法

./configure --host=$HOST --prefix=$PREFIX --with-zlib=$PREFIX/../zlib-1.2.11 \
                        --with-ssl=$PREFIX/../openssl-1.1.1b --disable-etc-default-login \
                        --disable-strip --sysconfdir=/usr/local/etc

 

编译完成后将sshd ssh-keygen sftp-server拷贝到板子上,我放的是/usr/local/sbin目录。

sshd 服务器应用程序,ssh-keygen用于生成key

将sshd_config拷贝至编译指定的路径/usr/local/etc。

 

启动sshd提示:

Privilege separation user sshd does not exist 

google了一下,找到了解决方法。 

方法一(推荐): 
修改/etc/passwd文件,在其中加入 
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
参考 
http://www.unixguide.net/comments/sun/ssh_installation.shtml/37.shtml 
http://www.gipsky.com/modules/newbb/viewtopic.php?topic_id=966 

方法二(不推荐)openssh-8.0p1已经没有UsePrivilegeSeparation 字段修改无效: 
修改/etc/ssh/sshd_config文件 
将其中 
UsePrivilegeSeparation yes 
修改为 
UsePrivilegeSeparation no 
虽然能解决问题,但是降低了ssh的安全级别。

 

Unable to load host key

Unable to load host key "/usr/local/etc/ssh/ssh_host_ed25519_key": incorrect passphrase supplied to decrypt private 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 ""

ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N ""

在sshd_config文件中,指明key的位置

 

sshd_config中修改内容还有:

允许root登录

#PermitRootLogin prohibit-password
PermitRootLogin yes

修改sftp-server路径

# override default of no subsystems
Subsystem       sftp    /usr/local/sbin/sftp-server

 

 

 

嵌入式系统开发中,SSH (Secure Shell) 的使用是为了在宿主机和目标设备之间建立安全的远程连接,以便于远程管理和调试。以下是搭建嵌入式交叉编译环境下SSH的基本步骤: 1. **安装工具**:首先,在宿主机上安装OpenSSH服务器,如对于Linux,可以使用`apt-get` 或 `yum` 命令安装: ``` sudo apt-get install openssh-server ``` 2. **配置SSH**:编辑 `/etc/ssh/sshd_config` 文件,设置允许root用户登录以及密钥认证等选项,并重启服务使之生效: ```bash vi /etc/ssh/sshd_config service ssh restart ``` 3. **生成公私钥对**:为方便无密码登录,可以在宿主机上生成SSH密钥对,然后将公钥复制到目标设备: ``` ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub | ssh target_device 'cat >> .ssh/authorized_keys' ``` 4. **交叉编译工具链**:确保你的交叉编译工具链已经配置好,它应能生成能在目标硬件运行的二进制文件。 5. **编译并传输SSH客户端**:使用交叉编译构建工具(如`arm-linux-gnueabi-gcc`),为目标设备编译一个SSH客户端程序,然后通过scp或rsync传输至设备: ```bash arm-linux-gnueabi-gcc ssh -o -static -o BinaryFile=text -o ElfType=ELF64_x86_64 -o LinkerScript=/path/to/linker_script -o OutputFormat=binary my_ssh_binary.o -o my_ssh_executable scp my_ssh_executable target_device:/path/to/save ``` 6. **启动SSH服务**:在目标设备上,通常需要手动启动SSH服务,如果之前没有添加到开机自启项,可以这样做: ``` target_device# systemctl start sshd ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值