openssh移植
来源:互联网 发布:网店大师软件 编辑:程序博客网 时间:2024/05/22 09:01
实验环境:Ubuntu14.04LTS+arm-none-linux-gnueabi(友善之臂的交叉编译工具4.4.3版)
软件版本:openssh-7.0p1+openssl-1.0.2l+zlib-1.2.11
首先去官网下载这几个源码包。 openssh官网 openssl官网 zlib官网
源码包下载完了,先新建个目录,然后把源码包都放到新建的目录上。终端输入:
sudo mkdir openssh && cd opensshmv 源码包 openssh目录tar -xf 源码包3个源码包分别移动,然后看看ssh目录下是否都有源码包了,然后开始解压,如果终端提示没有权限,如果终端提示没有权限,就命令前面加sudo。
fh@pc:~/linux/ssh$ cd ../openssh/fh@pc:~/linux/openssh$ lsopenssh-7.0p1.tar.gz openssl-1.0.2l.tar.gz zlib-1.2.11.tar.gzfh@pc:~/linux/openssh$ tar -xf zlib-1.2.11.tar.gz fh@pc:~/linux/openssh$ tar -xf openssh-7.0p1.tar.gz fh@pc:~/linux/openssh$ tar -xf openssl-1.0.2l.tar.gzfh@pc:~/linux/openssh$ lsopenssh-7.0p1 openssl-1.0.2l zlib-1.2.11openssh-7.0p1.tar.gz openssl-1.0.2l.tar.gz zlib-1.2.11.tar.gzfh@pc:~/linux/openssh$
解压完后,第一步:开始交叉编译zlib。这里配置安装目录是zlib同级目录内的install目录
fh@pc:~/linux/openssh$ cd zlib-1.2.11/fh@pc:~/linux/openssh/zlib-1.2.11$ ./configure --prefix=/home/fh/linux/openssh/install/zlib-1.2.11 Checking for gcc...Checking for shared library support...Building shared library libz.so.1.2.11 with gcc.Checking for size_t... Yes.Checking for off64_t... Yes.Checking for fseeko... Yes.Checking for strerror... Yes.Checking for unistd.h... Yes.Checking for stdarg.h... Yes.Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().Checking for vsnprintf() in stdio.h... Yes.Checking for return value of vsnprintf()... Yes.Checking for attribute(visibility) support... Yes.fh@pc:~/linux/openssh/zlib-1.2.11$ vim Makefilefh@pc:~/linux/openssh/zlib-1.2.11$ make && make install
然后修改Makefile文件,将里面的CC,AR,CPP,LDSHARE=后面的编译器名称改为自己系统安装的交叉编译器名称。我的系统里是arm-none-linux-gnueabi-gcc的交叉编译器,其中AR后面的跟ar而不是gcc。改好保存退出。
fh@pc:~/linux/openssh/zlib-1.2.11$ ls ../install/zlib-1.2.11/include lib share
fh@pc:~/linux/openssh/zlib-1.2.11$ ls ../install/zlib-1.2.11/include lib share然后make && make install。如果没有报错的话,就可以在install目录内可以看到zlib-1.2.11目录下有lib,include,share三个文件夹,这说明安装成功。
fh@pc:~/linux/openssh/zlib-1.2.11$ ls ../install/zlib-1.2.11/include lib share第二步:交叉编译openssl,步骤与zlib类似。进入到解压后的openssl目录,终端输入:
fh@pc:~/linux/openssh/zlib-1.2.11$ cd ../openssl-1.0.2l/fh@pc:~/linux/openssh/openssl-1.0.2l$ ./Configure --prefix=/home/fh/linux/openssh/install/openssl-1.0.2l os/compiler:arm-none-linux-gnueabi-gccmake[1]:正在离开目录 `/home/fh/linux/openssh/openssl-1.0.2l/test'Configured for os/compiler.fh@pc:~/linux/openssh/openssl-1.0.2l$ make && make install......................make[1]:正在离开目录 `/home/fh/linux/openssh/openssl-1.0.2l/tools'installing libcrypto.ainstalling libssl.acp libcrypto.pc /home/fh/linux/openssh/install/openssl-1.0.2l/lib/pkgconfigchmod 644 /home/fh/linux/openssh/install/openssl-1.0.2l/lib/pkgconfig/libcrypto.pccp libssl.pc /home/fh/linux/openssh/install/openssl-1.0.2l/lib/pkgconfigchmod 644 /home/fh/linux/openssh/install/openssl-1.0.2l/lib/pkgconfig/libssl.pccp openssl.pc /home/fh/linux/openssh/install/openssl-1.0.2l/lib/pkgconfigchmod 644 /home/fh/linux/openssh/install/openssl-1.0.2l/lib/pkgconfig/openssl.pcfh@pc:~/linux/openssh/openssl-1.0.2l$然后make && make install 。这个configure的c是大写哦,别看错了。如果安装的时候会报错。因为配置的时候安装目录没有写绝对地址,所以--prefix=安装目录的绝对地址。如果不知道该目录的绝对地址,可以先进入到该目录,然后用pwd显示该目录的所在位置。
第三步:交叉编译openssh。进入openssh目录,这个配置的时候参数比较多,需要用到前两步的openssl和zlib。因为这个不用安装,所以可以用相对目录。这时候可以看到配置输出的信息,找一下有没有found arm-none-linux-gnueabi-gcc yes之类的字样,防止配置的时候并没有找到交叉编译器,没有错误,就可以make了。make 也没错误,基本上就成功了。因为openssh实在开发板上运行,也就不需要make install的步骤了。
./configure --host=arm-none-linux-gnueabi --with-libs --with-zlib=../install/zlib-1.2.11 --with-ssl-dir=../install/openssl-1.0.2l --disable-etc-default-login CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar........................Host: arm-none-linux-gnueabi Compiler: arm-none-linux-gnueabi-gcc Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-all -std=gnu99 -fPIE Preprocessor flags: -I/home/fh/linux/openssh/openssh-7.0p1/../install/openssl-1.0.2l/include -I../install/zlib-1.2.11/include Linker flags: -L/home/fh/linux/openssh/openssh-7.0p1/../install/openssl-1.0.2l/lib -L../install/zlib-1.2.11/lib -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-all -pie Libraries: -lcrypto -lrt -ldl -lutil -lz -lnsl -lcrypt -lresolvfh@pc:~/linux/openssh/openssh-7.0p1$make..................../install/openssl-1.0.2l/lib -L../install/zlib-1.2.11/lib -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-all -pie -lssh -lopenbsd-compat -lcrypto -lrt -ldl -lutil -lz -lnsl -lcrypt -lresolv /usr/local/arm/opt/FriendlyARM/toolschain/4.4.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: creating a DT_TEXTREL in object.fh@pc:~/linux/openssh/openssh-7.0p1$没有报错,这就成功了。
第四步:在openssh目录下拷贝必要文件到目标板上。
scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 拷贝到目标板/usr/local/bin目录下
moduli ssh_config sshd_config拷贝到目标板/usr/local/etc目录下
sftp-server ssh-keysign拷贝到目标板/usr/local/libexec目录下
sshd拷贝到目标板/usr/local/sbin目录下,如果目标板没有这些目录,就要新建。
第五步:生成秘钥文件。
在目标板上分别执行:/usr/local/bin/ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
/usr/local/bin/ssh-keygen -t dsa -f ssh_host-dsa_key -N ""
/usr/local/bin/ssh-keygen -A 这个可以生成所有的秘钥。
第六步:修改目标板的passwd文件,最下面添加一行:sshd:*:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
第七步:修改目标板的密码;passwd root然后会提示输入新的密码,输两次就更改成功了。已经有密码的可以不用更改密码。
第八步:修改sshd_config文件中,有一行 #PermitRootLogin prohibit-password更改为#PermitRootLogin yes
有一行Subsystem sftp /usr/libexec/sftp-server 更改为Subsystem sftp /usr/local/libexec/sftp-server,保存退出。
第九步:启动openssh。在目标板上执行/usr/local/sbin/sshd,然后在pc上输入:ssh root@目标板的IP,输入密码,就登陆上开发板了。
参考文章:移植ssh到ARM Linux开发板成功(标准步骤)
- 移植OPENSSH
- openssh移植
- OpenSSH ARM移植
- 移植openssh到montavista后记
- 移植OpenSSH到arm手记
- 移植OpenSSH到arm手记
- SSH系列1: OpenSSH移植
- 移植OpenSSH到ARM板
- 移植openssh到nuc951evb板
- OpenSSH交叉编译和移植
- 移植OpenSSH 到嵌入式操作系统当中
- 移植openssh至嵌入式ARM开发板
- 移植openssh至arm9嵌入式开发板
- OpenSSH移植到ARM Linux教程
- 向嵌入式linux开发板移植openSSH
- 向嵌入式linux开发板移植openSSH
- 向嵌入式linux开发板移植openSSH
- 向嵌入式linux开发板移植openSSH
- FFMPEG学习【libavutil】:数据结构(二)
- C语言结构体课堂总结
- Python随机数的写法
- Oracle 创建表空间
- 7.20日早,java冒泡排序
- openssh移植
- Google SketchUp Pro 2013(草图大师2013)下载 v13.0.4124
- 泛型边界
- springmvc与mybatis的整合
- iOS app设备日志查看
- SSM+maven框架搭建好以后出现了406错误解决办法之一
- Java NIO系列教程(五) 通道之间的数据传输
- B
- 简单迭代服务器