linux下sftp

不得不说,linux真是一片沼泽地,一脚踏进去就觉得寸步难行。
我要做的事情是,将linux下的sftp封装成一个接口函数,方便在需要的地方调用。我编译ssh,编译rootfs,将其加载到系统中之后,发现有的地方加的打印能打印,有的地方无论怎么改都不能打印,这个事情我在之前也碰到过一次,后来发现是没有将编译生成的文件打包到rootfs中,所以尽管每次编译,但是加载rootfs时都是旧的文件。这次也一样,我经过打印跟踪发现,我添加的打印的内容被编译进了ssh,而ssh没有被打包进rootfs,所以我修改根目录下的Makefile解决了这一问题,同时我发现ssh_config,sshd_config这两个文件在openssh文件夹下都存在,所以我就在Makefile中将这两个文件也进行了打包,使其进入到目标机相应目录,然后,然后sftp就不能正常工作了。我一直都觉得是因为ssh文件被替换导致的,所以去看代码,linux源码,看得头昏脑涨,看不出个所以然。这个问题纠结了我一天,然后今天晚上,在高人的指点下,让我比较明朗。
现叙述如下:
sftp、ssh等的成功编译、运行,需要ssh_config文件及sshd_config文件,这两个文件怎么得到呢,当然可以手动编写,还有一种方法,别忘了虚拟机跑的是linux系统,而且是开源的,目标板上也是跑linux系统,所以可以将虚拟机上的配置文件拿过来,经过修改再使用。
这两个配置文件在虚拟机/etc/ssh目录下,进入root权限将该目录下的所有文件都拷贝出来。在这所有文件中,ssh_config和sshd_config这两个文件除了是配置文件需要放在目标板etc目录下之外,还是编译ssh过程中必须的文件,因此将ssh_config和sshd_config这两个文件经过修改之后放到openssh目录下,将其他文件直接放到目标机etc目录下。虚拟机ssh目录如下:
虚拟机的ssh目录
在open_src\rootfs\usr\local\etc目录下包含了以下配置文件:
sftp配置文件
除了刚刚放进去的那些配置文件之外,ssh_config和sshd_config既可以手动放进去,也可以在Makefile中将这两个文件打包到rootfs。此外,还有vsftpd.conf文件,手动编写的sftp配置文件。
目标板shell下的配置文件如图所示:
shell下配置文件
至此,环境方面的工作就搞定了。剩下的就是编译,首先要在编译ssh的Makefile中,将编译生成的ssh、sshd、sftp三个文件拷贝到rootfs将要打包的位置,然后在根目录中的Makefile中,将ssh、sshd、sftp这三个文件都打包到rootfs中,这样,加载了rootfs时,就可以将最新的文件带入,这一点可以在启动系统之后进入shell验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值