【嵌入式Linux】添加sshd (顺便dropbear--scp命令)

文章目录

一、文件系统支持--编译前支持

bash 复制代码
make menuconfig


二、嵌入式Linux设备端

0. 修改ssh的配置文件

bash 复制代码
vi /etc/ssh/sshd_config

找到并修改以下行,确保它们是这样的:

bash 复制代码
# 启用公钥认证
PubkeyAuthentication yes

# 指定公钥文件位置(通常这行已存在且正确)
AuthorizedKeysFile .ssh/authorized_keys

# 禁用密码认证 - 这是实现无密码登录的关键
PasswordAuthentication no

# 禁止空密码登录(可选,但推荐)
PermitEmptyPasswords no

1. 在开发板上生成SSH密钥对

首先,在您的Arm Linux开发板的终端里,运行以下命令来生成密钥对:

bash 复制代码
ssh-keygen -t ed25519 -C "for_ssh_login"
  • 系统会提示你 Enter file in which to save the key (/home/your_user/.ssh/id_ed25519):,直接按回车,使用默认路径。

  • 系统会提示 Enter passphrase (empty for no passphrase):,直接按回车,不要设置密码。这样才是真正的无密码登录。

  • 再次提示 Enter same passphrase again:,再次直接按回车。

这样就在 ~/.ssh/ 目录下生成了两个文件:私钥 id_ed25519 和公钥 id_ed25519.pub。

2. 将公钥授权给本机

接下来,把刚刚生成的公钥添加到授权密钥文件中:

bash 复制代码
# 确保 .ssh 目录存在且权限正确
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 将公钥内容添加到 authorized_keys 文件
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

# 设置 authorized_keys 文件的权限为 600
chmod 600 ~/.ssh/authorized_keys

3. 启动SSH服务器

bash 复制代码
/etc/init.d/sshd  start

4. 除错处理

a. 报错 procd_add_mdns

vi /etc/init.d/sshd

注释掉如下代码:

bash 复制代码
#procd_add_mdns "ssh" "tcp" "$lport"

b. 报错 Privilege separation user sshd does not exist

bash 复制代码
vi /etc/passwd

在末尾添加一行:

bash 复制代码
sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin

三、Ubuntu虚拟机端

虚拟机事先生成秘钥。

bash 复制代码
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/liefyuan/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/liefyuan/.ssh/id_rsa.
Your public key has been saved in /home/liefyuan/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hMjV1l/QIxAi7S6C1X5w23u103cvZNI5/uCirEFsbgs liefyuan@ubuntu
The key's randomart image is:
+---[RSA 2048]----+
|      oo..oo.o   |
|   . o o+.. . +  |
|    o..o.  . o . |
|    . ooo   .    |
|   o . +So   . . |
|  . . o++ . . B  |
|     .Eo+  . *.+ |
|       o +. o.=.+|
|        o.oo ..+*|
+----[SHA256]-----+

虚拟机的秘钥位置:~/.ssh/id_rsa.pub

输入命令后三个回车

拷贝公钥到设备端:vim ~/.ssh/id_rsa.pub

设备端粘贴公钥

bash 复制代码
echo "你的密钥" >> ~/.ssh/authorized_keys
  • 杀死 sshd:killall sshd
  • 开始 sshd:/etc/init.d/sshd start

虚拟机发送文件到设备端--带秘钥

bash 复制代码
scp -i ~/.ssh/id_rsa demo root@192.168.1.106:/opt/

例子:

bash 复制代码
$ scp -i ~/.ssh/id_rsa demo root@192.168.1.106:/opt/
demo                                                                                100% 3517KB 446.0KB/s   00:07    
相关推荐
牛马工作号3 小时前
Mosquitto + ACME:从 Docker Compose 部署到 TLS 证书自动续期与加载
运维·docker·容器
Initialize-le5 小时前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根8 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
U-Mail邮件系统9 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
倒头就睡的小比特10 小时前
Linux基础指令3
linux·服务器
天远数科10 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化
梦帮科技10 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
半杯咖啡半行码11 小时前
Linux 驱动开发入门:内核模块编程基础
linux·服务器·网络
别动我齐刘海12 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人