Openssh7.5移植

1.下载源码

从以下三个网站下载源码
  1. 从https://www.openssl.org/source/下载openssl-1.0.2l.tar.gz
  2. 从http://www.zlib.net/下载zlib 1.2.11
  3. 从http://www.openssh.com/portable.html下载openssh-7.5p1.tar.gz

2.交叉编译zlib

  1. 解压zlib文件 tar zxvf zlib-1.2.11.tar.gz
  2. 在操作的当前目录下新建安装文件所需文件夹 mkdir install,例如我操作的在/opt/openssh/的目录下,那么我新建文件夹install的最终新建目录为/opt/openssh/install
  3. 编辑配置文件
    $ /opt/openssh/install/zlib_install
    $ gedit Makefile

  4. 修改Makefile,修改内容如下
    CC=arm-linux-gnueabihf-gcc
    
    CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
    #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
    #CFLAGS=-g -DZLIB_DEBUG
    #CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
    #           -Wstrict-prototypes -Wmissing-prototypes
    
    SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
    LDFLAGS=
    TEST_LDFLAGS=-L. libz.a
    LDSHARED=arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
    CPP=arm-linux-gnueabihf-gcc -E
    
    STATICLIB=libz.a
    SHAREDLIB=libz.so
    SHAREDLIBV=libz.so.1.2.11
    SHAREDLIBM=libz.so.1
    LIBS=$(STATICLIB) $(SHAREDLIBV)
    
    AR=arm-linux-gnueabihf-ar
    ARFLAGS=rc
    RANLIB=arm-linux-gnueabihf-ranlib
    LDCONFIG=ldconfig
    LDSHAREDLIBC=-lc
    TAR=tar
    SHELL=/bin/sh
    EXE=
    
    
    
    
  5. 编译
        $ make

        $ make install

3.交叉编译openssl

  1. 解压openssl文件夹
  2. 配置编译选项并编译
    $ ./Configure --prefix=/opt/openssh/install/openssl  os/compiler:arm-linux-gnueabihf-gcc 
    $ make
    $ make install

4.交叉编译openssh

  1. 配置编译选项
    ./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/opt/openssh/install/zlib_install --with-ssl-dir=/opt/openssh/install/openssl --disable-etc-default-login --disable-strip CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar
    其中的--prefix参数没有作用,因为里面编译好的文件要安装到开发板,所以不用make install。所以作用不大
  2. 编译
    $ make

5.安装文件部署到开发板

  1. 开发板中新建以下目录(如果存在不用新建)
    /usr/local/openssh/bin
    /usr/local/openssh/etc
    /usr/local/libexec
    /var/run
    /var/empty
  2. 拷贝openssh中make生成的文件scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan到
    /usr/local/openssh/bin
  3. 拷贝moduli ssh_config sshd_config到
    /usr/local/openssh/etc
  4. 拷贝sftp-server ssh-keysign到
    /usr/local/libexec
  5. 拷贝sshd到
    /usr/local/sbin/
  6. 创建密码对(可以在主机上创建也可以在目标板上创建)
       ssh-keygen -t rsa1 -f ssh_host_key -N ""
       ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
       ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
       ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
       ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N "
       注意:在创建密码对之前进行软连接,因为我的ssh-keygen存到了/usr/local/openssh/bin而不是/usr/local/bin目录下面

7. 修改配置文件

sshd_config文件里的

	PermitRootLogin yes
	X11Forwarding yes
	X11DisplayOffset 2

注意:由于最终我需要使用windows下的xshell登陆openssh,所以需要修改X11支持选项

8.添加root登陆密码

修改/etc/passwd文件,修改第一行 root3XZuGkdinLneI:0:0:root:/home/root:/bin/sh红色的部分是密码1(可以通过命令root passwd修改后看看变成什么,移植的时候自己 修改passwd文件就    可以了)的加密后的密码登陆的时候使用

在最后一行添加:

sshdx74:74Privilege-separatedSSH:/var/empty/ssh:/sbin/nologin

登陆配置如下





6.遇到的问题

登陆的过程中遇到用Ubuntu的终端登陆是报PTY allocation request failed on channel0 错误,然后用xshell登陆不上去,原因是shell的解析需要pts的支持。执行下列命令即可

rm -rf /dev/ptmx

mknod /dev/ptmx c 5 2

chmod 666 /dev/ptmx

umount /dev/pts

rm -rf /dev/pts

mkdir /dev/pts

mount /dev/pts

如果执行mount /dev/pts遇到问题的话,可以参考我的另一篇文章。

因为/dev里面的内容会随着重启消失,建议将上述内容写进启动脚本





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值