巧用gitbash的scp命令实现跨网段的文件直传

文章介绍了嵌入式开发中通过Windows使用gitbash的SCP命令实现Linux服务器与Linux开发板之间的文件直传,避免了两次SCP操作。这种方法利用了SCP的空对空传输功能,但Windows自带的SCP不支持此功能。此外,文章还提到了成功传输的条件,包括正确配置SSH连接、设置root账户密码以及确保sftp服务正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

嵌入式开发的工作流一般是这样的,程序员通过Windows电脑登陆Linux服务器,在服务器上编译出二进制文件后,先将文件scp到本地,然后再scp到Linux开发板,如下图所示
跨网段网络架构
这样做需要执行两次scp命令,能否只执行一次呢?可以的

解决方案

Linux的scp支持空对空传输,既目的都是远端主机
scp支持空对空
所以可以用gitbash(支撑git运行的极简Linux环境)的scp命令来在Linux服务器和Linux开发板间直传文件
注意,传输前先确保Windows到服务器、Windows到开发板的ssh链路都是通的

scp wanghaipeng@10.126.13.23:~/MC50/msp/tools/dump_tools/vin_dump/ax_vin_raw_dump root@192.168.1.10:/opt/bin/dump_tools

命令运行效果
gitbash的scp空对空运行效果
可以看到,scp会先要求你输入目的主机的ssh密码,再输入源主机的ssh密码,然后传输就开始了。

为啥必须是gitbash的scp,win10自带的scp不行吗?

如果你的办公机是Windows,那win10自带的scp是不支持空对空的,这是我的实验结果
win10的scp不支持空对空
win10的scp是要求先输入源主机的ssh密码,再输入目的主机的ssh密码,可能不符合Linux版sftp服务器的期待,导致失败。

总结

我猜测空对空模式相当于ssh在Windows办公机上建了条ssl隧道,或者ssh端口转发之类的机制。

补充

  1. Linux开发板的root账户如果没有设置密码,则scp命令会执行失败,此时需要用passwd命令给root设置密码

  2. Linux开发板的sftp服务可能被禁,这种情况scp命令也会执行失败,可以检查下是否sshd_config配置有误,不是就联系相关人员
    开启sftp_server

  3. scp的源主机可以是多个,类似于cp命令的源文件可以是多个,此时就需要分别输入多个源主机的密码
    cp命令也支持多个源文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值