linux下sftp

来源:互联网 发布:2017人工智能最新进展 编辑:程序博客网 时间:2024/06/07 06:23

不得不说,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
原创粉丝点击