android:ssh移植

关于openssh的源码可以参看googlesource:

https://android.googlesource.com/

 

LOCAL_PATH:= $(call my-dir)

###################### libssh ######################
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := \
    acss.c authfd.c authfile.c bufaux.c bufbn.c buffer.c \
    canohost.c channels.c cipher.c cipher-acss.c cipher-aes.c \
    cipher-bf1.c cipher-ctr.c cipher-3des1.c cleanup.c \
    compat.c compress.c crc32.c deattack.c fatal.c hostfile.c \
    log.c match.c md-sha256.c moduli.c nchan.c packet.c \
    readpass.c rsa.c ttymodes.c xmalloc.c addrmatch.c \
    atomicio.c key.c dispatch.c kex.c mac.c uidswap.c uuencode.c misc.c \
    monitor_fdpass.c rijndael.c ssh-dss.c ssh-ecdsa.c ssh-rsa.c dh.c \
    kexdh.c kexgex.c kexdhc.c kexgexc.c bufec.c kexecdh.c kexecdhc.c \
    msg.c progressmeter.c dns.c entropy.c gss-genr.c umac.c jpake.c \
    schnorr.c ssh-pkcs11.c roaming_dummy.c \
    openbsd-compat/strtonum.c openbsd-compat/bsd-misc.c \
    openbsd-compat/timingsafe_bcmp.c openbsd-compat/bsd-getpeereid.c \
    openbsd-compat/readpassphrase.c openbsd-compat/vis.c \
    openbsd-compat/port-tun.c openbsd-compat/setproctitle.c \
    openbsd-compat/bsd-closefrom.c  openbsd-compat/getopt.c \
    openbsd-compat/rresvport.c openbsd-compat/bindresvport.c \
    openbsd-compat/bsd-statvfs.c openbsd-compat/xmmap.c \
    openbsd-compat/port-linux.c openbsd-compat/strmode.c \
    openbsd-compat/bsd-openpty.c \
    openbsd-compat/fmt_scaled.c \
    openbsd-compat/pwcache.c openbsd-compat/glob.c

#    openbsd-compat/getrrsetbyname.c
#    openbsd-compat/xcrypt.c 

LOCAL_C_INCLUDES := external/openssl/include external/zlib
PRIVATE_C_INCLUDES := external/openssl/openbsd-compat

LOCAL_SHARED_LIBRARIES += libssl libcrypto libdl libz

LOCAL_MODULE := libssh

LOCAL_CFLAGS+=-O3

include $(BUILD_SHARED_LIBRARY)

###################### ssh ######################

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng


LOCAL_SRC_FILES := \
    ssh.c readconf.c clientloop.c sshtty.c \
    sshconnect.c sshconnect1.c sshconnect2.c mux.c \
    roaming_common.c roaming_client.c

LOCAL_MODULE := ssh

LOCAL_C_INCLUDES := external/openssl/include
PRIVATE_C_INCLUDES := external/openssl/openbsd-compat

LOCAL_SHARED_LIBRARIES += libssh libssl libcrypto libdl libz

include $(BUILD_EXECUTABLE)

###################### sftp ######################

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := \
    sftp.c sftp-client.c sftp-common.c sftp-glob.c progressmeter.c

LOCAL_MODULE := sftp

LOCAL_C_INCLUDES := external/openssl/include
PRIVATE_C_INCLUDES := external/openssl/openbsd-compat

LOCAL_SHARED_LIBRARIES += libssh libssl libcrypto libdl libz

include $(BUILD_EXECUTABLE)

###################### scp ######################

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := \
    scp.c progressmeter.c bufaux.c

LOCAL_MODULE := scp

LOCAL_C_INCLUDES := external/openssl/include
PRIVATE_C_INCLUDES := external/openssl/openbsd-compat

LOCAL_SHARED_LIBRARIES += libssh libssl libcrypto libdl libz

include $(BUILD_EXECUTABLE)

###################### sshd ######################

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := \
    sshd.c auth-rhosts.c auth-rsa.c auth-rh-rsa.c \
	audit.c audit-bsm.c audit-linux.c platform.c \
	sshpty.c sshlogin.c servconf.c serverloop.c \
	auth.c auth1.c auth2.c auth-options.c session.c \
	auth-chall.c auth2-chall.c groupaccess.c \
	auth-skey.c auth-bsdauth.c auth2-hostbased.c auth2-kbdint.c \
	auth2-none.c auth2-passwd.c auth2-pubkey.c auth2-jpake.c \
	monitor_mm.c monitor.c monitor_wrap.c kexdhs.c kexgexs.c kexecdhs.c \
	auth-krb5.c \
	auth2-gss.c gss-serv.c gss-serv-krb5.c \
	loginrec.c auth-pam.c auth-shadow.c auth-sia.c md5crypt.c \
	sftp-server.c sftp-common.c \
	roaming_common.c roaming_serv.c \
	sandbox-null.c sandbox-rlimit.c sandbox-systrace.c sandbox-darwin.o

# auth-passwd.c

LOCAL_MODULE := sshd

LOCAL_C_INCLUDES := external/openssl/include external/zlib
PRIVATE_C_INCLUDES := external/openssl/openbsd-compat

LOCAL_SHARED_LIBRARIES += libssh libssl libcrypto libdl libz libcutils

include $(BUILD_EXECUTABLE)

###################### ssh-keygen ######################

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := \
    ssh-keygen.c

LOCAL_MODULE := ssh-keygen

LOCAL_C_INCLUDES := external/openssl/include
PRIVATE_C_INCLUDES := external/openssl/openbsd-compat

LOCAL_SHARED_LIBRARIES += libssh libssl libcrypto libdl libz

include $(BUILD_EXECUTABLE)

###################### sshd_config ######################

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE := sshd_config
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/ssh
LOCAL_SRC_FILES := sshd_config.android
include $(BUILD_PREBUILT)

###################### start-ssh ######################

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE := start-ssh
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_SRC_FILES := start-ssh
include $(BUILD_PREBUILT)


既然要移植openssh到android,那么首先需要把ssh的源码放在android代码里面并且使用合适的Android.mk确保android正常编译出正确的Openssh工具

 

我在android/external/下找到名为openssh的目录文件夹,里面正是openssh的源码。

然而正常情况下ssh工具并不会编译进system.img。

需要做一些些修改。

 

LOCAL_MODULE_TAGS := 这里需要指定版本。对应你的lunch版本

这些东西如果可以确保无误,那么我们应该能在android系统的/system/bin下面发现Android.mk里面指定的工具

 

 

/system/bin/ssh
/system/bin/ssh-keygen
/system/bin/sshd
/system/bin/start-ssh
/system/bin/scp
/system/bin/sftp
/system/etc/ssh/sshd_config
/system/bin/ssh-keygen
/system/bin/sshd
/system/bin/start-ssh
/system/bin/scp
/system/bin/sftp
/system/etc/ssh/sshd_config

+++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++

移植成功了可能还想将sshd作为一个服务启动在android后台。

这个问题也很简单。

正常的init.rc里面有

 

mkdir /data/ssh 0750 root shell
mkdir /data/ssh/empty 0700 root root
service sshd /system/bin/start-ssh
    class main
    disabled

我们需要改一下service这边

 

service sshd /system/bin/start-ssh
    class main
    user root
    group root

 

重新烧录一个版本,就没啥问题啦。

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值