下载地址:https://matt.ucc.asn.au/dropbear/releases/dropbear-2017.75.tar.bz2
其他版本:https://matt.ucc.asn.au/dropbear/releases/

源码介绍

源码的使用

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

README

解压之后在目录下有readme说明

  1. This is Dropbear, a smallish SSH server and client.
  2. https://matt.ucc.asn.au/dropbear/dropbear.html
  3. INSTALL has compilation instructions.
  4. (INSTALL中有编译说明)
  5. MULTI has instructions on making a multi-purpose binary (ie a single binary
  6. which performs multiple tasks, to save disk space)
  7. MULTI中有关于制作多种类型的二进制程序(单个二进制程序执行多项任务从而节省磁盘空间))
  8. SMALL has some tips on creating small binaries.
  9. SMALL中有编译小型二进制程序的一些技巧)
  10. See TODO for a few of the things I know need looking at, and please contact
  11. me if you have any questions/bugs found/features/ideas/comments etc :)
  12. (请去TODO中查看我认为你需要去看看的一些东西,并且如果你有问题或者bug请联系我)
  13. Matt Johnston
  14. matt@ucc.asn.au
  15. In the absence of detailed documentation, some notes follow:
  16. (在没有非常详细文档的情况下,一些笔记在这里:)
  17. ============================================================================
  18. Server public key auth:
  19. You can use ~/.ssh/authorized_keys in the same way as with OpenSSH, just put
  20. the key entries in that file. They should be of the form:
  21. (你可以像OpenSSH一样使用~/.ssh/authorized_keys,只要把以下关键的条目放到authorized_keys这个文件:)
  22. ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV+ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk/yU99UVv6NWV/5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET/MG8qyskG/2IE2DPNIaJ3Wy+Ws4IZEgdJgPlTYUBWWtCWOGc= someone@hostname
  23. You must make sure that ~/.ssh, and the key file, are only writable by the
  24. user. Beware of editors that split the key into multiple lines.
  25. (你必须保证~/.ssh这个目录和~/.ssh/authorized_keys这个密钥是被用户可写的。要防止密钥被编辑器拆分成多行)
  26. Dropbear supports some options for authorized_keys entries, see the manpage.
  27. Dropbear 支持authorized_keys 条目的一些选项,请参见手册页。)
  28. ============================================================================
  29. Client public key auth:(客户端公钥认证)
  30. Dropbear can do public key auth as a client, but you will have to convert
  31. OpenSSH style keys to Dropbear format, or use dropbearkey to create them.
  32. Dropbear 可以作为客户端进行公钥认证,但您必须转换
  33. Dropbear 格式的 OpenSSH 样式密钥,或使用 dropbearkey 创建它们。)
  34. If you have an OpenSSH-style private key ~/.ssh/id_rsa, you need to do:
  35. (如果你已经有了OpenSSH类型的私钥~/.ssh/id_rsa,你需要将OpenSSH的私钥转换成dropbear类型的:)
  36. dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
  37. dbclient -i ~/.ssh/id_rsa.db <hostname>
  38. Dropbear does not support encrypted hostkeys though can connect to ssh-agent.
  39. Dropbear 不支持加密的主机密钥,但可以连接到 ssh-agent。)
  40. ============================================================================
  41. If you want to get the public-key portion of a Dropbear private key, look at
  42. dropbearkey's '-y' option.
  43. (如果您想获取 Dropbear 私钥的公钥部分,请查看dropbearkey 的“-y”选项。)
  44. ============================================================================
  45. To run the server, you need to server keys, this is one-off:
  46. (为了运行服务端,你需要有服务端的密钥,这里选择其中一个就行)
  47. ./dropbearkey -t rsa -f dropbear_rsa_host_key
  48. ./dropbearkey -t dss -f dropbear_dss_host_key
  49. ./dropbearkey -t ecdsa -f dropbear_ecdsa_host_key
  50. or alternatively convert OpenSSH keys to Dropbear:
  51. (或者将OpenSSH的密钥进行转换)
  52. ./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key
  53. You can also get Dropbear to create keys when the first connection is made -
  54. this is preferable to generating keys when the system boots. Make sure
  55. /etc/dropbear/ exists and then pass '-R' to the dropbear server.
  56. (你也可以当你第一次连接时自动创建-一般在系统启动的时候会初始化密钥。确保/etc/dropbear/目录下存在并且其目录下的文件是通过"-R"传递的)
  57. ============================================================================
  58. If the server is run as non-root, you most likely won't be able to allocate a
  59. pty, and you cannot login as any user other than that running the daemon
  60. (obviously). Shadow passwords will also be unusable as non-root.
  61. (如果dropbear运行在没有root权限的情况,你很可能无法分配pty,并且你除了运行守护进程之外不能以任何身份进行登录)
  62. ============================================================================
  63. The Dropbear distribution includes a standalone version of OpenSSH's scp
  64. program. You can compile it with "make scp", you may want to change the path
  65. of the ssh binary, specified by _PATH_SSH_PROGRAM in options.h . By default
  66. the progress meter isn't compiled in to save space, you can enable it by
  67. adding 'SCPPROGRESS=1' to the make commandline.
  68. (这个dropbear发行版包含一个独立版本的 OpenSSH scp
  69. 程序。 你可以用“make scp”编译它,你可能想改变ssh 二进制文件的路径
  70. ,路径由 options.h 中的 _PATH_SSH_PROGRAM 指定。 默认
  71. 进度表未编译以节省空间,您可以通过以下方式启用它
  72. 'SCPPROGRESS=1' 添加到 make 命令行。)

INSTALL

Basic Dropbear build instructions:
(基础的dropbear编译说明:)

- Edit options.h to set which features you want.
- Edit debug.h if you want any debug options (not usually required).

(If using a non-tarball copy, "autoconf; autoheader")
(如果使用非压缩的拷贝)

./configure      (optionally with --disable-zlib or --disable-syslog,
                  or --help for other options)
(检测编译环境是否支持,同时生成makefile和config.status、config.h、config.log)

Now compile:
(现在开始编译:)

make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"

And install (/usr/local/bin is usual default):
(然后开始安装,默认安装目录是/usr/local/bin)

make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

(you can leave items out of the PROGRAMS list to avoid compiling them. If you
recompile after changing the PROGRAMS list, you *MUST* "make clean" before
recompiling - bad things will happen otherwise)
(你可以在PROGRAMS排除不编译的软件。如果你修改了PROGRAMS中要编译的程序并且重新编译,你一定要先运行"make clean"再继续-如果不这样做可能会出现问题)

See MULTI for instructions on making all-in-one binaries.
(需要编译all-in-one的二进制程序请查看MULTI)
If you want to compile statically, add "STATIC=1" to the make command-line.
(如果你想要静态编译,在make的时候添加"STATIC=1")
Binaries can be stripped with "make strip"
(二进制程序也可以通过"make strip"去掉符号表)

============================================================================

If you're compiling for a 386-class CPU, you will probably need to add
CFLAGS=-DLTC_NO_BSWAP so that libtomcrypt doesn't use 486+ instructions.
(如果你正在一个80386类型的cpu上编译,你可能需要添加CFLAGS=-DLTC_NO_BSWAP,从而libtomcryp)

============================================================================

Compiling with uClibc:

Firstly, make sure you have at least uclibc 0.9.17, as getusershell() in prior
versions is broken. Also note that you may get strange issues if your uClibc
headers don't match the library you are running with, ie the headers might
say that shadow password support exists, but the libraries don't have it.

Compiling for uClibc should be the same as normal, just set CC to the magic
uClibc toolchain compiler (ie export CC=i386-uclibc-gcc or whatever).
You can use "make STATIC=1" to make statically linked binaries, and it is
advisable to strip the binaries too. If you're looking to make a small binary,
you should remove unneeded ciphers and MD5, by editing options.h

It is possible to compile zlib in, by copying zlib.h and zconf.h into a
subdirectory (ie zlibincludes), and 

export CFLAGS="-Izlibincludes -I../zlibincludes"
export LDFLAGS=/usr/lib/libz.a

before ./configure and make.

If you disable zlib, you must explicitly disable compression for the client -
OpenSSH is possibly buggy in this regard, it seems you need to disable it
globally in ~/.ssh/config, not just in the host entry in that file.

You may want to manually disable lastlog recording when using uClibc, configure
with --disable-lastlog.

One common problem is pty allocation. There are a number of types of pty
allocation which can be used -- if they work properly, the end result is the
same for each type. Running configure should detect the best type to use
automatically, however for some systems, this may be incorrect. Some
things to note:

    If your system expects /dev/pts to be mounted (this is a uClibc option),
    make sure that it is.

    Make sure that your libc headers match the library version you are using.

    If openpty() is being used (HAVE_OPENPTY defined in config.h) and it fails,
    you can try compiling with --disable-openpty. You will probably then need
    to create all the /dev/pty?? and /dev/tty?? devices, which can be
    problematic for devfs. In general, openpty() is the best way to allocate
    PTYs, so it's best to try and get it working.

image.png

./configure —help

参考:https://blog.csdn.net/xringm/article/details/79900154

root@ubuntu:~/Desktop/test# ./configure --help
`configure' configures this package to adapt to many kinds of systems.
(`configure' 配置这个软件包适应各种各样的操作系统)

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.
(配置环境变量(例如CC、CFLAGS等),像这样VAR=VALUE。请看以下有用的描述:

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]
其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,
库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/
local/share,比较凌乱。
./configure --prefix=/usr/local/test
可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。
用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的
删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可
(相同的操作系统)。
当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过
uninstall。

--exec-prefix=EPREFIX
与'--prefix'选项类似,但是他是用来设置结构依赖的文件的安装位置.如果没有设置这个选项的话,
默认使用的选项值将被设为和'--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]
  这里可以通过--build=none,--host=none隐藏编译程序的buildid和所在程序编译时的操作系统

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]
  --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-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.
  --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) no

Optional 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 locations

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard 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> if
              you have headers in a nonstandard directory <include dir>
  CPP         C preprocessor

Use 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.

编译器

参考:https://blog.csdn.net/weixin_42409052/article/details/121471436

gcc编译器

Linux下编译C代码使用的是gcc,GCC(GNU Compiler Collection)是由 GNU这个组织开发的编程语言
编译器,最开始叫GNU C Compiler,只支持编译C语言,后面渐渐开始支持编译C++,Java等语言,因此
改叫GNU Compiler Collection,缩写还是GCC。C语言的GCC由下面三部分组成:
1)gcc-core:gcc编译器,可以将源码编译成可执行程序
2)Binutils:除gcc-core之外的小工具的合集,里面包含了链接器ld,汇编器as等。
3)glibc:C语言的标准库,包含了printf等函数。
执行如下命令,可以查看当前gcc编译的目标程序是在x86上运行还是在arm上运行:
gcc -v

会输出gcc的版本信息,里面有target这一项,根据该项的值来判断:
1)target:x86_64-linux-gnu,表示编译生成的程序只能在x86架构上运行。
2)target:arm-linux-gnueabihf,表示编译生成的程序只能在arm架构上运行。

gcc编译过程

image.png

gcc hello.c -o hello这条命令包含了如下过程:

# 1.预处理,可理解为把头文件和宏的代码展开汇总成 C 代码,把 *.c 转换得到 *.i 文件
gcc –E hello.c –o hello.i
# 2.编译,可理解为把 C 代码转换为汇编代码,把 *.i 转换得到 *.s 文件
gcc –S hello.i –o hello.s
# 3.汇编,可理解为把汇编代码转换为机器码,把 *.s 转换得到 *.o,即目标文件
gcc –c hello.s –o hello.o
# 4.链接,把不同文件之间的调用关系链接起来,把一个或多个 *.o 转换成最终的可执行文件
gcc hello.o –o hello

上述四个过程是可以分别执行的,也可以按照顺序组合在一起,如:
gcc -S hello.c -o hello.s    #相当与1和2两条命令的结合,同理
gcc –c hello.c –o hello.o   #相当于1,2,3这三条命令的结合

链接分为两种:静态链接和动态链接。
动态链接: GCC 编译时的默认选项。动态是指在应用程序运行时才去加载外部的代码库,比如c语言的标准库,如果是动态链接生成的程序,那么都是在运行的时候才去加载。
静态链接: 链接时使用选项“–static”,它在编译阶段就会把所有用到的库打包到自己的可执行程序中。
静态链接的优点是兼容性好,程序基本不依赖于外部环境,但是生成的程序也比较大。
动态链接生成的程序兼容性差点,但是生成的程序比较小。
gcc hello.c -o hello   #动态链接生成
gcc hello.c -o hello_static --static   #静态链接生成

本地编译器和交叉编译器

编译器和目标程序运行在不同的架构上,这种编译器叫交叉编译器,x86平台上gcc交叉编译器主要有:
1)arm-linux-gnueabihf-gcc:这个编译器名称中的Linux表明该编译器生成的目标程序运行在Linux系统上,程序可以使用Linux下的c标准库和Linux内核API。
2)arm-none-eabi-gcc:名称中的none表示该编译器编译生成的目标程序运行环境不需要操作系统,可以用于编译逻辑代码,uboot,内核代码等。
3)arm-linux-gnueabihf-gcc也是可以编译uboot和内核代码的。但是推荐用arm-none-eabi-gcc。

(本地编译)在x86架构系统玩转x86架构程序

centos编译

https://blog.csdn.net/m0_38022615/article/details/80992048

安装开发包组(可略过这一步)

yum install groupinstall Development tools
[root@VM-20-12-centos compare2txt]# yum groupinfo "Development Tools"
已加载插件:fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
 * centos-sclo-rh: mirrors.aliyun.com

组:开发工具
 组编号:development
 描述:一个基本开发环境。
 必要的软件包:
    autoconf
    automake
    binutils
   =bison
   =flex
    gcc
    gcc-c++
    gettext
   =libtool
    make
   =patch
    pkgconfig
   =redhat-rpm-config
   =rpm-build
   =rpm-sign
 默认的软件包:
   =byacc
   =cscope
   =ctags
   =diffstat
   =doxygen
    elfutils
   =gcc-gfortran
    git
   =indent
   =intltool
   =patchutils
   =rcs
   =subversion
   =swig
   =systemtap
 可选的软件包:
   ElectricFence
   ant
   babel
   bzr
   ccache
   chrpath
   clips
   clips-devel
   clips-doc
   clips-emacs
   clips-xclips
   clipsmm-devel
   clipsmm-doc
   cmake
   cmucl
   colordiff
   compat-gcc-44
   compat-gcc-44-c++
   cvs
   cvsps
   darcs
   dejagnu
   email2trac
   expect
   ftnchek
   gcc-gnat
   gcc-objc
   gcc-objc++
   ghc
   git
   haskell-platform
   imake
   javapackages-tools
   ksc
   lua
   mercurial
   mock
   mod_dav_svn
   nasm
   nqc
   nqc-doc
   ocaml
   perltidy
   qgit
   rpmdevtools
   rpmlint
   sbcl
   scorep
   systemtap-sdt-devel
   systemtap-server
   trac
   trac-git-plugin
   trac-mercurial-plugin
   trac-webadmin
   translate-toolkit
[root@VM-20-12-centos compare2txt]#

image.png

解压dropbear源码

tar -jxvf dropbear-2017.75.tar.bz2

开始编译

[root@VM-20-12-centos dropbear]# cd dropbear-2016.74

#-–prefix=/usr/local/dropbear/指定安装后的总目录位置
#-–sysconfdir=/etc/dropbear/是指定其配置文件存放路径
[root@VM-20-12-centos dropbear]# ./configure --prefix=/usr/local/dropbear/ --sysconfdir=/etc/dropbear/

#make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp”(只写make也行)
[root@VM-20-12-centos dropbear]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"


#make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp” install之后;可以看到下载的文件,在/usr/local/dropbear下
[root@VM-20-12-centos dropbear]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install   


#bin下的是客户端程序;
#sbin下的是服务端程序;
#/usr/local/dropbear/bin/dbclient就相当于ssh协议
[root@VM-20-12-centos dropbear]# tree -a
.
├── bin
│   ├── dbclient
│   ├── dropbearconvert
│   ├── dropbearkey
│   └── scp
├── sbin
│   └── dropbear
└── share
    └── man
        ├── man1
        │   ├── dbclient.1
        │   ├── dropbearconvert.1
        │   └── dropbearkey.1
        └── man8
            └── dropbear.8

6 directories, 9 files
[root@VM-20-12-centos dropbear]#

编译好的程序

打包一下
dropbear.tar.gz.7z
image.png

root@ubuntu:~/Desktop/dropbear/自编译/dropbear/sbin# readelf -h dropbear 
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x4028f8
  Start of program headers:          64 (bytes into file)
  Start of section headers:          222944 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:           64 (bytes)
  Number of section headers:         30
  Section header string table index: 29
root@ubuntu:~/Desktop/dropbear/自编译/dropbear/sbin# file dropbear 
dropbear: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=bdcb5f9e54de47607da03836ce51ec7678b4d091, not stripped
root@ubuntu:~/Desktop/dropbear/自编译/dropbear/sbin#

ubuntu编译

make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" STATIC=1 strip

这样编译出来的没有任何导入函数(加上strip参数)
image.png
静态编译(加上STATIC=1)
image.png
我这里没有安装这个步骤(通过make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp” install),只是编译,编译的文件在当前目录之下

运行

生成密钥

./dropbearkey -t rsa -f dropbear_rsa_host_key

image.png
将生成的密钥复制到指定目录

[root@VM-20-12-centos /]# ll /usr/local/dropbear/bin
总用量 520
-rwxr-xr-x 1 root root 219688 6月   2 02:01 dbclient
-rwxr-xr-x 1 root root 137912 6月   2 02:01 dropbearconvert
-rwxr-xr-x 1 root root 133128 6月   2 02:01 dropbearkey
-rw------- 1 root root    805 6月  20 17:34 dropbear_rsa_host_key
-rwxr-xr-x 1 root root  29472 6月   2 02:01 scp
[root@VM-20-12-centos /]# mkdir /etc/dropbear
[root@VM-20-12-centos /]# cp /usr/local/dropbear/bin/dropbear_rsa_host_key /etc/dropbear
[root@VM-20-12-centos /]# ll /etc/dropbear
总用量 4
-rw------- 1 root root 805 6月  20 18:14 dropbear_rsa_host_key
[root@VM-20-12-centos /]#

image.png

运行

image.png
在本机笔记本上连接开启了dropbear 的服务器
image.png

(交叉编译)在x86架构系统玩转arm架构程序

网上下载

下载地址:http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/dropbear_0.52-5_arm.ipk
dropbear_0.52-5_arm.ipk.zip
image.png

ubuntu编译

参考:http://blog.chinaunix.net/uid-22670933-id-5792705.html
https://www.freesion.com/article/188824076/
安装arm交叉编译器

apt search gcc|grep arm

image.png

apt-get install gcc-4.7-arm-linux-gnueabi
./configure

修改makefile
image.png

make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" STATIC=1 strip

编译失败
image.png

如何反向查询程序使用的编译器

使用detect it easy
image.png
交叉编译的查询不出来
image.png