dropbear编译
❶ 嵌入式系统中用dropbear做SSH服务器如何让其关联编译的scp命令呢
因为你编译dropbear时没有生成scp可执行文件,刚才我也遇到了该问题。执行的时候指定:
cd dropbear-sourcecode
# ./configure --prefix=/config_path
# make PROGRAMS="dropbear dbclient dropbearkey scp"
# make PROGRAMS="dropbear dbclient dropbearkey scp" install
就可以了,
平台:嵌入式linux-powerpc or arm
描述:dropbear 本身不支持sftp无法做到上传下载文件,可以借助openssh的sftp-server实现。
方法:
下载openssh,编译出sftp-server,然后将其拷贝到目标板子。别忘了,把依赖的动态库拷贝到目标里去。
sftp-server的拷贝位置为/usr/libexec,没有此目录,新建一个目录即可。
附录:openssh的编译方法,本文采用的是powerpc架构下的平台编译,编译器是powerpc-linux-gcc,ppc_6xx软链接到powerpc-linux
1.首先下载zlib,因为openssh需要zlib库的支持
编译zlib,大概的步骤如下
./configure --prefix=将要存放的lib目录
make CC=交叉编译器 ARCH=编译的体系类型
make install
2.编译openssh
./configure --host=编译的体系 --with-zlib=zlib的目录
make sftp-server
3.如果没什么问题,当前目录下生成sftp-server
ppc_6xx-readelf -d sftp-server 查看依赖的链接库
4.拷贝链接库到目标板的lib
5.拷贝sftp-server到目标板的/usr/libexec 目录下
❸ 水星MW150R v8 版可以刷openwrt吗或者DD-WRT
可以到openwrt官网查询支持openwrt的路由器,地址如下:
OpenWrt 可以被描述为一个嵌入式的 Linux 发行版,(主流路由器固件有 dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的、静态的系统。
以TP-LINK WR703N 为例简单介绍一下刷openwrt流程:
1、下载安装
访问WR703N在OpenWrt的Wiki页,然后在Flashing一节中找到下载链接:squashfs-factory.bin。
进入路由器管理界面,出厂配置为,用户名和密码均为admin,然后进入固件更新,选择下载的文件,然后更新。等待一段时间(~~2min),然后重启路由。
2、初始配置
用一根网线将路由器的Lan口和你电脑相连,电脑上设置为DHCP模式。然后运行cmd.exe
输入telent 192.168.1.1
成功后将出现OpenWrt的欢迎界面。
然后更改root密码:
输入passwd
更改root密码后dropbear(SSH 服务)就运行了,输入exit退出telent。
以后就可以通过ssh管理OpenWrt。
3、网络配置
OpenWrt官方的固件是不带LuCl的,所以初始的网络设定需要在命令行下完成
下载ssh连接工具putty
输入192.168.1.1
点击open,如果弹出窗口点是即可。
输入用户名root回车 然后输入你刚刚设定的密码
然后用vi修改相关配置。
首先修改/etc/config/wireless文件
输入vi /etc/config/wireless回车
注释掉# option disabled 1
按i进入修改模式
改好后按esc,然后输入:wq保存退出
然后修改/etc/config/network文件。
首先修改lan接口配置,注释掉此行:
# option ifname 'eth0'
然后增加wan接口,如果你上级网络是DHCP的,则文件的末尾添加:
config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'
如果你上级网络是静态IP,则在文件的末尾添加:
config interface 'wan'
option ifname 'eth0'
option proto 'static'
option ipaddr '10.22.33.124'
option netmask '255.255.255.0'
option gateway '10.22.33.1'
option dns '202.113.16.10'
然后将路由器的Lan/Wan口接到上级网络中,重启路由器。
这时便可以通过电脑寻找SSID为 OpenWrt的无线网络,加入后电脑便可以通过703N上网了。
接着ssh 到路由器
登陆后输入opkg update
opkg install luci
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start
就有luci(WEB)界面了~
完后就可以通过浏览器访问192.168.1.1来配置路由器了
❹ 升级openssh出错,求大神指点怎么解决
一、环境描述
1)操作系统:CentOS 6.5 64位
2)Openssl升级前版本:openssl 0.9.8e
3)Openssl升级后版本:openssl 1.0.1j(源码安装)
4)Openssh升级前版本:openssh-4.3p2-41.el5
5)Openssh升级后版本:openssh_6.7p1(源码安装)
6)连接工具SecureCrt
二、安装Dropbear代替OpenSSH
安装dropbear只是为了在升级失败sshd启动不起来时,依然可以登录系统。也可以用其他工具代替,比如telnet
1)下载dropbear安装包
https://matt.ucc.asn.au/dropbear/releases/dropbear-2014.66.tar.bz2
2)检查安装依赖包
rpm -qa zlib* gcc make
3)编译安装dropbear
# tar jxf dropbear-2014.66.tar.bz2
# cd dropbear-2014.66
# ./configure
# make && make install
检查生成的文件是否正确:
4)生成证书
# /usr/local/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key (注:系统默认是没有/etc/dropbear 目录的需要自行到创建)
# /usr/local/bin/dropbearkey -t rsa -s 4096 -f /etc/dropbear/dropbear_rsa_host_key
5)启动dropbear
# /usr/local/sbin/dropbear -p 2222 //监听2222端口
查看是否启动成功:
三、升级OpenSSL到openssl-1.0.1j,并删除老版本
1)升级前准备
下载openssl-1.0.1j
http://www.openssl.org/source/openssl-1.0.1j.tar.gz
2)删除旧版本
#rpm -e `rpm -qa | grep openssl` --allmatches --nodeps
3)安装openssl, 一定记得加上--shared选项, 否则openssh编译的时候会找不到新安装的openssl的library, 会报错: openssl的 header和library版本不匹配
(注:这里LZ纠结了很久,如果按照步骤执行./config --prefix=/usr --shared 依然报错: openssl的 header和library版本不匹配,很可能是由于之前安装的Openssl也是源码安装的,而且没有删除干净,需要手工搜索ssl相关的文件
1.执行find / -name ssl
2.将搜索结果中/usr/lib /usr/lib64 /lib64 /lib等目录下的结果逐一重命名,千万不要乱删除,逐一尝试。这是个笨办法,目前还没有发现啥比较好的办法。)
# ./config --prefix=/usr --shared
# make
# make test
# make install
完毕后查看openssl版本安装是否正确
# openssl version -a
四、升级sshd到OpenSSH-6.7并删除老版本ssh
1)升级前准备
查看是否缺包
# rpm -qa | egrep "gcc|make|perl|pam|pam-devel"
如果有配置yum了的话可以直接yum安装这些包,这样既可以检验是否装了,没装的直接装上。
yum -y install gcc* make perl pam pam-devel
2)下载openssh-6.7p1.tar.gz
http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz
备份ssh :
# mv /etc/ssh /etc/ssh.bak
# openssl version -a
3)编译安装新版本openssh
# tar zxf openssh-6.7p1.tar.gz && cd openssh-6.7p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
# make
先卸载完旧版本的openssh,再make install
# rpm -qa | grep openssh
# rpm -e `rpm -qa | grep openssh`
Openssh-askpass是用于图形界面下输入口令的,用不着可以不装
# make install
4)查看是否升级到新版本
5)复制启动脚本到/etc/init.d
# cp /root/openssh-6.7p1/contrib/RedHat/sshd.init /etc/init.d/sshd
加入开机自启
# chkconfig --add sshd
6)启动sshd,用start或reload。不要restart,restart 会直接断开连接,而并不会接着启动sshd服务,这时候要通过其他途径进入机器,然后启动sshd服务才行。
四、删除dropbear。
终端软件里再重新打开一个标签,
在这里Dropbear用来防止升级不成功,用来替代openssh连接服务器。
在开启2222端口(dropbear启动时的端口,可以设置别的 )的情况下,通过xshell连接的方法是:
ssh 192.168.0.1 2222 (192.168.0.1为需要连接的服务器ip)
删除dropbear安装的文件,并杀掉进程
# rm -rf /etc/dropbear/ /usr/local/sbin/dropbear /usr/local/bin/dropbear*
❺ 没硬件怎么玩zynq7000
官网提供的可执行文件是基于64位Linux的:zynq_linux.tar.gz.
对于32位的系统,需要自己编译,解决方案如下:
1) 下载代码:git clone git://git.xilinx.com/qemu-xarm.git
2) 配置工程:
cd qemu-xarm
./configure --target-list=arm-softmmu --disable-werror --disable-kvm
3) 编译: make
4) 编译结果:
[walt@zynq7k qemu-xarm]$ ls -l arm-softmmu/qemu-system-arm
-rwxrwxr-x. 1 walt walt 18428427 Nov 6 15:27 arm-softmmu/qemu-system-arm
5) 检测环境是否OK,测试如下:
[walt@zynq7k qemu-xarm]$ ./arm-softmmu/qemu-system-arm -h
QEMU emulator version 1.0.50, Copyright (c) 2003-2008 Fabrice Bellard
usage: qemu-system-arm [options] [disk_image]
‘disk_image’ is a raw hard disk image for IDE hard disk 0
Standard options:
-h or -help display this help and exit
-version display version information and exit
-machine [type=]name[,prop[=value][,...]]
selects emulated machine (-machine ? for list)
property accel=accel1[:accel2[:...]] selects accelerator
supported accelerators are kvm, xen, tcg (default: tcg)
-cpu cpu select CPU (-cpu ? for list)
…… ……
注: 若无法执行,请按http://wiki.xilinx.com/zynq-qemu提示安装缺失的动态库。
替换官方下载的压缩包中的文件为新编译的qemu-system-arm,测试执行如下:
[walt@zynq7k zynq_linux]# ./start_qemu.sh
ram size=40000000
error reading QSPI block device
error no mtd drive for nand flash
a0mpcore_priv: smp_priv_base f8f00000
error no sd drive for sdhci controller (0)
error no sd drive for sdhci controller (1)
Number of configured NICs 0×1
ram_size 40000000, board_id d32, loader_start 0
Uncompressing Linux… done, booting the kernel.
Booting Linux on physical CPU 0
Linux version 3.3.0-14.2-build1 (relman@xcobldal824) (gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-50) ) #1 SMP PREEMPT Thu Jul 12 09:04:32 MDT 2012
CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Xilinx Zynq Platform, model: Xilinx Zynq ZC702
bootconsole [earlycon0] enabled
Memory policy: ECC disabled, Data cache writealloc
PERCPU: Embedded 7 pages/cpu @c190b000 s5696 r8192 d14784 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 255744
Kernel command line: console=ttyPS0,115200 root=/dev/ram rw initrd=0×800000,8M ip=:::::eth0:dhcp earlyprintk
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 240MB 768MB = 1008MB total
Memory: 1009280k/1009280k available, 39296k reserved, 270336K highmem
Virtual kernel memory layout:
vector : 0xffff0000 – 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 – 0xfffe0000 ( 896 kB)
vmalloc : 0xf0000000 – 0xff000000 ( 240 MB)
lowmem : 0xc0000000 – 0xef800000 ( 760 MB)
pkmap : 0xbfe00000 – 0xc0000000 ( 2 MB)
moles : 0xbf000000 – 0xbfe00000 ( 14 MB)
.text : 0xc0008000 – 0xc040bdb0 (4112 kB)
.init : 0xc040c000 – 0xc0430640 ( 146 kB)
.data : 0xc0432000 – 0xc045fd20 ( 184 kB)
.bss : 0xc045fd44 – 0xc0479f5c ( 105 kB)
Preemptible hierarchical RCU implementation.
Verbose stalled-CPUs detection is disabled.
NR_IRQS:128
xlnx,ps7-ttc-1.00.a #0 at 0xf0000000, irq=43
Console: colour mmy device 80×30
Calibrating delay loop… 147.35 BogoMIPS (lpj=736768)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
smp_twd: clock not found: -2
Calibrating local timer… 84.48MHz.
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 1 counters available
Setting up static identity map for 0x2f3000 – 0x2f3034
CPU1: Booted secondary processor
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
Brought up 2 CPUs
SMP: Total of 2 processors activated (271.66 BogoMIPS).
devtmpfs: initialized
NET: Registered protocol family 16
L2x0 series cache controller enabled
l2x0: 8 ways, CACHE_ID 0×00000000, AUX_CTRL 0×72060000, Cache size: 524288 B
registering platform device ‘pl330′ id 0
registering platform device ‘arm-pmu’ id 0
hw-breakpoint: debug architecture 0×0 unsupported.
xslcr xslcr.0: at 0xF8000000 mapped to 0xF0008000
bio: create slab at 0
gpiochip_add: registered GPIOs 0 to 245 on device: xgpiops
xgpiops e000a000.gpio: gpio at 0xe000a000 mapped to 0xf000a000
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Switching to clocksource xttcpss_timer1
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport mole.
RPC: Registered udp transport mole.
RPC: Registered tcp transport mole.
RPC: Registered tcp NFSv4.1 backchannel transport mole.
Trying to unpack rootfs image as initramfs…
rootfs image is not initramfs (junk in compressed archive); looks like an initrd
Freeing initrd memory: 8192K
xscugtimer xscugtimer.0: ioremap fe00c200 to f000c200 with size 400
pl330 dev 0 probe success
highmem bounce pool size: 64 pages
JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
msgmni has been set to 1459
io scheler noop registered
io scheler deadline registered
io scheler cfq registered (default)
e0001000.uart: ttyPS0 at MMIO 0xe0001000 (irq = 82) is a xuartps
console [ttyPS0] enabled, bootconsole disabled
console [ttyPS0] enabled, bootconsole disabled
e0000000.uart: ttyPS1 at MMIO 0xe0000000 (irq = 59) is a xuartps
xdevcfg f8007000.devcfg: ioremap f8007000 to f0060000 with size 100
brd: mole loaded
loop: mole loaded
GEM: BASEADDRESS hw: e000b000 virt: f0062000
XEMACPS mii bus: probed
xemacps e000b000.eth: invalid address, use assigned
MAC updated d2:c4:43:31:6b:d0
eth0, pdev->id -1, baseaddr 0xe000b000, irq 54
ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
xusbps-ehci xusbps-ehci.0: Xilinx PS USB EHCI Host Controller
xusbps-ehci xusbps-ehci.0: new USB bus registered, assigned bus number 1
xusbps-ehci xusbps-ehci.0: irq 53, io mem 0×00000000
xusbps-ehci xusbps-ehci.0: USB 2.0 started, EHCI 0.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 0 ports detected
Initializing USB Mass Storage driver…
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
Xilinx PS USB Device Controller driver (Apr 01, 2011)
mousedev: PS/2 mouse device common for all mice
i2c /dev entries driver
Linux video capture interface: v2.00
gspca_main: v2.14.0 registered
uvcvideo: Unable to create debugfs directory
usbcore: registered new interface driver uvcvideo
USB Video Class driver (1.1.1)
WDT OF probe
xwdtps f8005000.swdt: Xilinx Watchdog Timer at 0xf0066000 with timeout 10 seconds
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
NET: Registered protocol family 17
VFP support v0.3: implementor 41 architecture 3 part 40 variant 0 rev 0
Registering SWP/SWPB emulation handler
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
GEM: lp->tx_bd ffdfb000 lp->tx_bd_dma 2f2b2000 lp->tx_skb ee9199c0
GEM: lp->rx_bd ffdfc000 lp->rx_bd_dma 2f2b1000 lp->rx_skb ee9198c0
GEM: MAC 0x3143c4d2, 0x0000d06b, d2:c4:43:31:6b:d0
GEM: phydev ee90ec00, phydev->phy_id 0x1410cc2, phydev->addr 0×17
eth0, phy_addr 0×17, phy_id 0x01410cc2
eth0, attach [Marvell 88E1111] phy driver
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 10.0.2.2, my address is 10.0.2.15
IP-Config: Complete:
device=eth0, addr=10.0.2.15, mask=255.255.255.0, gw=10.0.2.2,
host=10.0.2.15, domain=, nis-domain=(none),
bootserver=10.0.2.2, rootserver=10.0.2.2, rootpath=
RAMDISK: ext2 filesystem found at block 0
RAMDISK: Loading 8192KiB [1 disk] into ram disk… done.
VFS: Mounted root (ext2 filesystem) on device 1:0.
devtmpfs: mounted
Freeing init memory: 144K
Starting rcS…
++ Mounting filesystem
++ Setting up mdev
eth0: link up (1000/FULL)
++ Starting telnet daemon
++ Starting http daemon
++ Starting ftp daemon
++ Starting dropbear (ssh) daemon
rcS Complete
zynq> uname -v
#1 SMP PREEMPT Thu Jul 12 09:04:32 MDT 2012
zynq> df
Filesystem 1K-blocks Used Available Use% Mounted on
none 508808 0 508808 0% /tmp
zynq>
❻ openwrt ssh 怎么关闭禁止roo登录t
openwrt默认开机启动ssh的方法 当前的情况: Openwrt开机后不能用ssh直接连接,需要在页面上配置后才能连上,system->administration->SSH Access其实就是修改下接口为自己需要的接口,修改密码(密码不能为空)保存应用就行了。 注:openwrt默认开启telnet但是没开启ssh,当配置了用户名和密码后就默认开启ssh关闭了telnet。这时用telnet连接时会提示Login failed. 解决过程: 主要分两步,第一步修改dropbear配置文件:开始不知道这个修改是修改了什么配置文件,所以需要从luci页面开始查找。用grep命令查到 在/usr/lib/lua/luci/model/cbi/admin_system/admin.lua 如下图可以看出来,修改的是配置文件/etc/config/dropbear文件 配置之后的 #vim /etc/config/dropbear 配置之前(默认的),没有配置接口 #vim /etc/config/dropbear 到这里可以确定配置文件了,现在要做的就是修改openwrt编译环境中的文件,让openwrt编译出来的固件直接符合我们的要求。 Openwrt下的路径:package/network/services/dropbear/files/dropbear.config[plain] [openwrt@rootfiles]$vimdropbear.config 1configdropbear 2optionPasswordAuth'on' 3optionRootPassw...
N