日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

嵌入式linux轻量级sshd服务工具Dropbear移植

發(fā)布時間:2023/12/20 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式linux轻量级sshd服务工具Dropbear移植 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

嵌入式linux輕量級sshd服務工具Dropbear移植

  • 介紹
  • 編譯流程
    • 1. 編譯zlib
    • 2. 編譯dropbear
    • 3. 移植
    • 4. 運行
    • 5. 移植sftp-server

介紹

??往往考慮到嵌入式系統(tǒng)內存空間小的問題,生成的dropbear大小只有幾百kb的大小,所以經常適用于嵌入式系統(tǒng)。需要注意的是dropbear只能使用scp上傳文件, 不能使用sftp,若需要支持sftp,還需要用openssl編譯生成的sftp-server來支持sftp。

編譯流程

dropbear源碼:https://matt.ucc.asn.au/dropbear/dropbear.html
zlib源碼: http://zlib.net/

1. 編譯zlib

#表示注釋
$表示命令行

# 下載源碼 $ wget http://zlib.net/zlib-1.2.11.tar.gz $ tar -zxvf zlib-1.2.11.tar.gz# 創(chuàng)建安裝目錄install $ mkdir install $ ls install zlib-1.2.11 zlib-1.2.11.tar.g $ cd zlib-1.2.11# 查看幫助文檔 $ ./configure --help usage:configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX][--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR][--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"] # 這里并沒有提示類似--host,--cross_complie之類方便指定交叉編譯工具鏈的選項 # --prefix=PREFIX 指定安裝路徑 # --static 編譯靜態(tài)庫, 注意這里最好編譯動態(tài)庫,不要選--static # 編譯靜態(tài)庫時,在后面配置dropbear時可能會報"checking for deflate in -lz... no"這樣的錯誤 # ./configure --prefix=`pwd`/../install --static# 編譯動態(tài)庫 $ ./configure --prefix=`pwd`/../install# 運行configure之后,打開生成的makefile,可以從中找到關鍵的CC,CPP這些和交叉編譯有關的地方,修改成自己的交叉編譯工具,如 # CC=arm-linux-gcc # CPP=arm-linux-gcc -E # AR=arm-linux-ar # RANLIB=arm-linux-ranlib # LDSHARED=arm-linux-gcc # 注意在make之前要將交叉編譯工具的路徑添加到當前的shell環(huán)境中,可以命令export=$PATH:交叉編譯工具的路徑 # 或者使用廠家提供的sdk中的source來設置交叉編譯工具的環(huán)境,如果先用這種方式設置環(huán)境,再使用configure,一般都不必再修改Makefile了# 編譯和安裝 make make install# 編譯安裝結果 $ ls ../install/ include lib share

2. 編譯dropbear

#表示注釋
$表示命令行

# 下載源碼 $ wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2020.81.tar.bz2# 解壓 $ tar -jxvf dropbear-2020.81.tar.bz2# 創(chuàng)建安裝路徑 mkdir install $ ls install dropbear-2020.81 dropbear-2020.81.tar.bz2 $ cd dropbear-2020.81 # 查看編譯幫助文檔 $ ./configure --help `configure' configures this package to adapt to many kinds of systems.Usage: ./configure [OPTION]... [VAR=VALUE]...To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables.Defaults for the options are specified in brackets.Configuration:-h, --help display this help and exit--help=short display options specific to this package--help=recursive display the short help of all the included packages-V, --version display version information and exit-q, --quiet, --silent do not print `checking ...' messages--cache-file=FILE cache test results in FILE [disabled]-C, --config-cache alias for `--cache-file=config.cache'-n, --no-create do not create output files--srcdir=DIR find the sources in DIR [configure dir or `..']Installation directories:--prefix=PREFIX install architecture-independent files in PREFIX[/usr/local]--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX[PREFIX]By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'.For better control, use the options below.Fine tuning of the installation directories:--bindir=DIR user executables [EPREFIX/bin]--sbindir=DIR system admin executables [EPREFIX/sbin]--libexecdir=DIR program executables [EPREFIX/libexec]--sysconfdir=DIR read-only single-machine data [PREFIX/etc]--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]--localstatedir=DIR modifiable single-machine data [PREFIX/var]--libdir=DIR object code libraries [EPREFIX/lib]--includedir=DIR C header files [PREFIX/include]--oldincludedir=DIR C header files for non-gcc [/usr/include]--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]--datadir=DIR read-only architecture-independent data [DATAROOTDIR]--infodir=DIR info documentation [DATAROOTDIR/info]--localedir=DIR locale-dependent data [DATAROOTDIR/locale]--mandir=DIR man documentation [DATAROOTDIR/man]--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]--htmldir=DIR html documentation [DOCDIR]--dvidir=DIR dvi documentation [DOCDIR]--pdfdir=DIR pdf documentation [DOCDIR]--psdir=DIR ps documentation [DOCDIR]System types:--build=BUILD configure for building on BUILD [guessed]--host=HOST cross-compile to build programs to run on HOST [BUILD]Optional Features:--disable-option-checking ignore unrecognized --enable/--with options--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)--enable-FEATURE[=ARG] include FEATURE [ARG=yes]--enable-static Build static binaries--disable-harden Don't set hardened build flags--disable-largefile omit support for large files--disable-zlib Don't include zlib support--enable-pam Try to include PAM support--disable-openpty Don't use openpty, use alternative method--disable-syslog Don't include syslog support--disable-shadow Don't use shadow passwords (if available)--enable-plugin Enable support for External Public Key Authentication plug-in--enable-fuzz Build fuzzing. Not recommended for deployment.--enable-bundled-libtom Force using bundled libtomcrypt/libtommath even if a system version exists.--disable-bundled-libtom Force using system libtomcrypt/libtommath, fail if it does not exist.Default is to use system if available, otherwise bundled.Dropbear requires system libtommath >= 1.2.0 and libtomcrypt >= 1.18.0--disable-lastlog Disable use of lastlog even if detected no--disable-utmp Disable use of utmp even if detected no--disable-utmpx Disable use of utmpx even if detected no--disable-wtmp Disable use of wtmp even if detected no--disable-wtmpx Disable use of wtmpx even if detected no--disable-loginfunc Disable use of login() etc. no--disable-pututline Disable use of pututline() etc. (uwtmp) no--disable-pututxline Disable use of pututxline() etc. (uwtmpx) noOptional Packages:--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)--with-zlib=PATH Use zlib in PATH--with-pam=PATH Use pam in PATH--with-lastlog=FILE|DIR specify lastlog location common locationsSome influential environment variables:CC C compiler commandCFLAGS C compiler flagsLDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in anonstandard directory <lib dir>LIBS libraries to pass to the linker, e.g. -l<library>CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> ifyou have headers in a nonstandard directory <include dir>CPP C preprocessorCXX C++ compiler commandCXXFLAGS C++ compiler flagsUse these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations.Report bugs to the package provider.# 配置 # configure --prefix=安裝路徑 --host=arm CC=交叉編譯鏈gcc名稱 --with-zlib=zlib安裝路徑 # 安裝路徑最后使用絕對路徑 $ ./configure --prefix=/opt/dropbear/install --host=arm CC=arm-linux-gcc --with-zlib=/opt/zlib/install# 編譯 $ make $ make scp # 編譯出來的scp在dropbear的源碼目錄下,而非安裝--prefix=/opt/dropbear/install目錄下 $ make install# 注,編譯完成后可以使用arm-linux-strip工具去除調試信息,.so同樣適用, 這樣優(yōu)化后能減小文件大小,對嵌入式系統(tǒng)很有用, 比如: $ arm-linux-strip scp

3. 移植

  • 將scp復制到/usr/bin
  • 將/opt/dropbear/install下的文件復制到相應的/usr/bin, /usr/sbin下面
  • 在/etc目錄下面創(chuàng)建dropbear,注意這一個目錄一定要有
  • mkdir -p /etc/dropbear

    4. 運行

    #表示注釋
    $表示命令行

    # 查看版本及命令 $ /usr/sbin/dropbear -V $ /usr/sbin/dropbear -h# 需要注意一個選項-R, 使用這個選項可以不必立刻生成hostkey,會在需要的時候自動生成 # 運行,為了方便,最好添加到自啟動中, 自啟動的方法就不這里贅述了 $ /usr/sbin/dropbear -R# 也可以先生成dropbear_rsa_host_key, 放到/etc/dropbear/下, 生成一次就夠了 $ dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key $ dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key # 運行 $ /usr/sbin/dropbear

    5. 移植sftp-server

    源碼地址:https://www.openssh.com/portable.html

    # 下載 $ wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz $ tar -zxvf openssh-8.6p1.tar.gz $ mkdir install $ cd openssh-8.6p1 # ./configure --host=arm-linux --with-zlib=zlib安裝路徑 $./configure --host=arm-linux --with-zlib=/opt/zlib/install# 編譯sft-server make sftp-server# 利用arm-linux-strip減小sftp-server文件大小 $ arm-linux-strip sftp-server# 利用arm-linux-readelf查看sftp-server的依賴庫 # arm-linux-readelf -d sftp-server Dynamic section at offset 0x1dc60 contains 29 entries:Tag Type Name/Value0x00000003 (PLTGOT) 0x1edb80x00000002 (PLTRELSZ) 1144 (bytes)0x00000017 (JMPREL) 0x17c40x00000014 (PLTREL) REL0x00000011 (REL) 0x13640x00000012 (RELSZ) 1120 (bytes)0x00000013 (RELENT) 8 (bytes)0x6ffffffa (RELCOUNT) 1310x00000015 (DEBUG) 0x00x00000006 (SYMTAB) 0x1cc0x0000000b (SYMENT) 16 (bytes)0x00000005 (STRTAB) 0xb5c0x0000000a (STRSZ) 1553 (bytes)0x6ffffef5 (GNU_HASH) 0x11700x00000001 (NEEDED) Shared library: [libcrypto.so.1.0.0]0x00000001 (NEEDED) Shared library: [libc.so.6]0x00000001 (NEEDED) Shared library: [ld-linux.so.3]0x0000000c (INIT) 0x1c3c0x0000000d (FINI) 0x19c540x00000019 (INIT_ARRAY) 0x1ec540x0000001b (INIT_ARRAYSZ) 4 (bytes)0x0000001a (FINI_ARRAY) 0x1ec580x0000001c (FINI_ARRAYSZ) 4 (bytes)0x0000001e (FLAGS) BIND_NOW0x6ffffffb (FLAGS_1) Flags: NOW0x6ffffff0 (VERSYM) 0x11a00x6ffffffe (VERNEED) 0x12d40x6fffffff (VERNEEDNUM) 30x00000000 (NULL) 0x0

    將sftp-server復制到開發(fā)板的/usr/libexec/目錄下, 同時將sftp-server以來的庫復制到/usr/lib/目錄下

    總結

    以上是生活随笔為你收集整理的嵌入式linux轻量级sshd服务工具Dropbear移植的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。