• rv1126-rv1109-openssh


    这是一个工具,可以通过ssh远程登录来操作,非常逆天!

    于是rv1109代码自身自带有openssh

    所以只需要打开config即可

    1. diff --git a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
    2. index f843b07cc..feabc8465 100755
    3. --- a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
    4. +++ b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
    5. @@ -68,3 +68,9 @@ BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
    6. # BR2_TARGET_ROOTFS_UBIFS_LEBSIZE is reset to default
    7. # BR2_TARGET_ROOTFS_UBIFS_OPTS is reset to default
    8. BR2_TARGET_ROOTFS_UBI_SQUASHFS=y
    9. +BR2_PACKAGE_OPENSSH=y
    10. +BR2_PACKAGE_OPENSSH_CLIENT=y
    11. +BR2_PACKAGE_OPENSSH_SERVER=y
    12. +BR2_PACKAGE_OPENSSH_ENABLE_ROOT_LOGIN=y
    13. +BR2_PACKAGE_OPENSSH_KEY_UTILS=y
    14. +BR2_PACKAGE_OPENSSH_LONBON=y

    然后就可以看到out目录下面生成了scp、ssh、ssh-add、ssh-keygen、ssh-keyscan等

    然后要把密钥这些文件放进去

     

    1. diff --git a/buildroot/fs/common.mk b/buildroot/fs/common.mk
    2. index 25ce3cbed..4f00960a1 100755
    3. --- a/buildroot/fs/common.mk
    4. +++ b/buildroot/fs/common.mk
    5. @@ -35,7 +35,7 @@ ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES))
    6. ROOTFS_FULL_DEVICES_TABLE = $(FS_DIR)/full_devices_table.txt
    7. ROOTFS_FULL_USERS_TABLE = $(FS_DIR)/full_users_table.txt
    8. -
    9. +OPENSSH_DIR_FILES = $(TARGET_DIR)/../../../package/openssh2
    10. ROOTFS_COMMON_NAME = rootfs-common
    11. ROOTFS_COMMON_TYPE = rootfs
    12. ROOTFS_COMMON_DEPENDENCIES = \
    13. @@ -172,6 +172,11 @@ $$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): $$(ROOTFS_$(2)_DEPENDENCIES)
    14. mkdir -p $(TARGET_DIR)/mnt/ro
    15. mkdir -p $(TARGET_DIR)/mnt/rw
    16. mkdir -p $(TARGET_DIR)/mnt/rwfs
    17. +ifeq ($(BR2_PACKAGE_OPENSSH_LONBON),y)
    18. + mkdir -p $(TARGET_DIR)/libexe
    19. + cp -a $(OPENSSH_DIR_FILES)/libexe/* $(TARGET_DIR)/libexe
    20. + cp -a $(OPENSSH_DIR_FILES)/etc/ssh/* $(TARGET_DIR)/etc/ssh
    21. +endif

    运行后会打包进跟文件系统

    就可以看到我打包的路径

    然后就完成了,openssh就这么简单,里面是密钥这些文件

    ==============================测试openssh==================================

    1. //-i 指定密钥文件
    2. ssh -i ./etc/ssh/ssh_host_rsa_key sdk@192.168.1.149
    3. //登录我的ubuntu(远程登录设备终端)
    4. // ssh -i [密钥] [用户名]@[IP]
    5. exit //注销
    6. scp -i ./etc/ssh/ssh_host_rsa_key bin/mv sdk@192.168.1.149:work/rk
    7. //cp文件到远程(拷贝本地文件到远程设备)
    8. // scp -i [密钥] [文件] [用户名]@[IP]
    9. scp -i ./etc/ssh/ssh_host_rsa_key sdk@192.168.1.149:work/rk/mv ./mnt/rw
    10. //cp文件到本地(拷贝远程设备中的文件到本地)
    11. // scp -i [密钥] [用户名]@[IP][文件] [本地目录]

     远程登录设备终端:

     拷贝本地文件到远程设备:

     拷贝远程设备中的文件到本地:

     

    ===============================生成密钥=====================================

    1. 要在本地 Windows 系统上生成 OpenSSH 格式的私钥,可以使用 ssh-keygen 命令。请按照以下步骤进行操作:
    2. 打开命令提示符或 PowerShell。你可以在 Windows 上使用内置的命令提示符或 Windows PowerShell。
    3. 使用 ssh-keygen 命令生成密钥。以下是一些常用选项:
    4. -t 选项:指定密钥类型,通常选择 rsa 或 ed25519
    5. -b 选项:指定密钥的位数。一般来说,2048 位或更多是安全的。例如,-b 2048
    6. -f 选项:指定生成的密钥文件的名称和路径。如果未指定路径,则会在当前用户的主目录中创建默认路径。
    7. 例如,生成一个 2048 位的 RSA 密钥并将其保存到用户主目录下的 .ssh 文件夹中,可以运行以下命令:
    8. shell
    9. ssh-keygen -t rsa -b 2048
    10. 在生成密钥时,你将被要求指定文件保存位置和设置一个密码。你可以选择将密钥保存在默认位置(通常是 C:\Users\<YourUsername>\.ssh)或者选择其他位置。如果你选择将密码留空,则私钥将不会被加密。
    11. 完成后,将在指定的文件夹中生成两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。私钥文件包含 .pem 扩展名。
    12. 如果你想要在 Linux 服务器上使用此密钥对进行身份验证,你需要将生成的公钥(.pub 文件)复制到服务器的 ~/.ssh/authorized_keys 文件中。你可以使用 SSH 客户端连接到服务器,并将公钥上传到服务器,或者将公钥的内容手动复制到服务器上的 authorized_keys 文件中。
    13. 现在,你可以在 Linux 服务器上使用生成的私钥文件进行 SSH 连接,例如:
    14. shell
    15. ssh -i /path/to/private/keyfile username@hostname
    16. 其中 /path/to/private/keyfile 是生成的私钥文件的路径,username 是你在服务器上的用户名,hostname 是服务器的主机名或 IP 地址。
    17. 请注意,生成的私钥文件包含私钥信息,因此应谨慎保存,并不要将其与他人分享。公钥文件(.pub)可以安全地与其他人分享,并添加到远程服务器的 authorized_keys 文件中,以实现 SSH 密钥身份验证。

    ==================================最后全部补丁===============================

    1. diff --git a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
    2. index f843b07cc..feabc8465 100755
    3. --- a/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
    4. +++ b/buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig
    5. @@ -68,3 +68,9 @@ BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
    6. # BR2_TARGET_ROOTFS_UBIFS_LEBSIZE is reset to default
    7. # BR2_TARGET_ROOTFS_UBIFS_OPTS is reset to default
    8. BR2_TARGET_ROOTFS_UBI_SQUASHFS=y
    9. +BR2_PACKAGE_OPENSSH=y
    10. +BR2_PACKAGE_OPENSSH_CLIENT=y
    11. +BR2_PACKAGE_OPENSSH_SERVER=y
    12. +BR2_PACKAGE_OPENSSH_ENABLE_ROOT_LOGIN=y
    13. +BR2_PACKAGE_OPENSSH_KEY_UTILS=y
    14. +BR2_PACKAGE_OPENSSH_LONBON=y
    15. \ No newline at end of file
    16. diff --git a/buildroot/package/openssh/Config.in b/buildroot/package/openssh/Config.in
    17. old mode 100644
    18. new mode 100755
    19. index 7c69c0acb..f6d08ba2c
    20. --- a/buildroot/package/openssh/Config.in
    21. +++ b/buildroot/package/openssh/Config.in
    22. @@ -41,4 +41,12 @@ config BR2_PACKAGE_OPENSSH_KEY_UTILS
    23. help
    24. Key utilities: ssh-keygen, ssh-keyscan.
    25. +config BR2_PACKAGE_OPENSSH_LONBON
    26. + bool "openssh2"
    27. + default y
    28. + help
    29. + A free version of the SSH protocol suite of network
    30. + connectivity tools. The standard 'ssh', 'sshd', 'scp', and
    31. + friends.version4.6p1.
    32. +
    33. endif
    34. diff --git a/buildroot/package/openssh/openssh.mk b/buildroot/package/openssh/openssh.mk
    35. old mode 100644
    36. new mode 100755
    37. index e2599e853..5aef23a58
    38. --- a/buildroot/package/openssh/openssh.mk
    39. +++ b/buildroot/package/openssh/openssh.mk
    40. @@ -13,6 +13,9 @@ OPENSSH_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable
    41. OPENSSH_LICENSE = BSD-3-Clause, BSD-2-Clause, Public Domain
    42. OPENSSH_LICENSE_FILES = LICENCE
    43. +OPENSSH_DIR = $(TARGET_DIR)/../../../package/openssh
    44. +OPENSSH_DKDIR = mkdir
    45. +OPENSSH_CP = mkdir
    46. # patch touching m4/openssh.m4
    47. OPENSSH_AUTORECONF = YES
    48. @@ -142,4 +145,10 @@ endef
    49. OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_ENABLE_ROOT_LOGIN
    50. endif
    51. +_all:
    52. +ifeq ($(BR2_PACKAGE_OPENSSH_LONBON),y)
    53. + $(OPENSSH_DKDIR) -p $(TARGET_DIR)/libexe
    54. + $(OPENSSH_CP) -a $(OPENSSH_DIR)/libexe/* $(TARGET_DIR)/libexe
    55. + $(OPENSSH_cp) -a $(OPENSSH_DIR)/etc/ssh/* $(TARGET_DIR)/etc/ssh
    56. +endif
    57. $(eval $(autotools-package))

    ================================frpc 穿透===================================

    1. 1.重启android设备进入先创建出几个key
    2. mkdir -p /data/ssh
    3. chmod 700 /data/ssh
    4. cd /data/ssh/
    5. ssh-keygen -t rsa -f id_rsa -N “自定义秘钥”
    6. //这里生成id_rsa和id_rsa.pub文件
    7. 2.将我们电脑上的公钥push进去
    8. //注意,authorized_keys是pc客户端的公钥文件
    9. adb push id_rsa.pub /data/ssh/authorized_keys
    10. 3.更改sshd服务配置文件/system/etc/ssh/sshd_config
    11. #Port 22改为Port 22
    12. #PermitRootLogin yes改为PermitRootLogin without-password
    13. #RSAAuthentication yes改为RSAAuthentication yes
    14. #PubkeyAuthentication yes改为PubkeyAuthentication yes
    15. PasswordAuthentication no改为#PasswordAuthentication no
    16. #PermitEmptyPasswords no改为PermitEmptyPasswords yes
    17. #ChallengeResponseAuthentication yes改为ChallengeResponseAuthentication yes
    18. #UsePrivilegeSeparation yes改为UsePrivilegeSeparation no
    19. 4.启动ssh服务
    20. #android系统内启动服务
    21. start-ssh
    22. //不中断的在后台运行:nohup start-ssh &
    23. 5.selinux的安全策略配置
    24. #5.1、修改device/rockchip/common/sepolicy/file_contexts 添加
    25. /system/bin/start-ssh u:object_r:start-ssh_exec:s0
    26. #5.2、修改device/rockchip/common/sepolicy/start-ssh.te添加
    27. type start-ssh, domain;
    28. type start-ssh_exec, exec_type, file_type;
    29. init_daemon_domain(start-ssh)
    30. allow start-ssh start-ssh:tcp_socket { read write getopt getattr setopt accept create bind listen name_bind node_bind };
    31. allow start-ssh fwmarkd_socket:sock_file { write };
    32. allow start-ssh netd:unix_stream_socket { connectto };
    33. allow start-ssh start-ssh:fd { use };
    34. allow start-ssh port:tcp_socket { name_bind };
    35. allow start-ssh node:tcp_socket { node_bind };
    36. allow start-ssh system_file:file { execute_no_trans };
    37. allow start-ssh start-ssh:capability { setgid net_raw setuid dac_override net_bind_service };
    38. allow start-ssh start-ssh:udp_socket { create };
    39. allow start-ssh system_data_file:file { read open getattr create write };
    40. allow start-ssh system_data_file:dir { read write open getattr add_name };
    41. allow start-ssh rootfs:lnk_file { getattr };
    42. allow start-ssh shell_exec:file { getattr execute read open execute_no_trans };
    43. allow start-ssh devpts:chr_file { open ioctl getattr read write setattr getattr };
    44. #5.3、修改system/sepolicy/domain.te
    45. neverallow {
    46. -system_server
    47. -system_app
    48. -init
    49. + -start-ssh
    50. -installd # for relabelfrom and unlink, check for this in explicit neverallow
    51. } system_data_file:file no_w_file_perms;
    52. # do not grant anything greater than r_file_perms and relabelfrom unlink
    53. 6.编译运行烧录设备
    54. 7.SSH连接(可以使用xshell进行连接默认端口22)
    55. 运行起来后,用电脑连接,连接进去后直接就是root用户
    56. ssh root@192.168.0.1
    57. 运行ok时的/data/ssh目录
    58. rk3399_box:/data/ssh # ls -l
    59. total 56
    60. -rw------- 1 root root 412 2021-04-13 06:51 authorized_keys
    61. -rw------- 1 root root 668 2021-04-13 06:51 ssh_host_dsa_key
    62. -rw------- 1 root root 604 2021-04-13 06:51 ssh_host_dsa_key.pub
    63. -rw------- 1 root root 1675 2021-04-13 06:51 ssh_host_rsa_key
    64. -rw------- 1 root root 396 2021-04-13 06:51 ssh_host_rsa_key.pub
    65. -rw------- 1 root root 3342 2021-04-13 06:51 sshd_config
    66. 8.收尾工作
    67. a、把启动服务做进固件里面去
    68. b、然后将/data/ssh/里面的文件全部拷贝出来,编译的时候拷贝到system/etc/ssh/目录,开机再拷贝到data/ssh目录,并设置好相关的权限
    69. 修改:rk3399_android7.1/device/rockchip/rk3399/init.rk3399.rc
    70. # For ssh 开机拷贝配置文件
    71. mkdir /data/ssh
    72. chmod 777 /data/ssh
    73. copy /system/etc/ssh/authorized_keys /data/ssh/authorized_keys
    74. copy /system/etc/ssh/ssh_host_dsa_key /data/ssh/ssh_host_dsa_key
    75. copy /system/etc/ssh/ssh_host_dsa_key.pub /data/ssh/ssh_host_dsa_key.pub
    76. copy /system/etc/ssh/ssh_host_ecdsa_key /data/ssh/ssh_host_ecdsa_key
    77. copy /system/etc/ssh/ssh_host_ecdsa_key.pub /data/ssh/ssh_host_ecdsa_key.pub
    78. copy /system/etc/ssh/ssh_host_rsa_key /data/ssh/ssh_host_rsa_key
    79. copy /system/etc/ssh/ssh_host_rsa_key.pub /data/ssh/ssh_host_rsa_key.pub
    80. copy /system/etc/ssh/sshd_config /data/ssh/sshd_config
    81. mkdir /data/ssh/empty
    82. chmod 600 /data/ssh/empty
    83. chmod 600 /data/ssh/authorized_keys
    84. chmod 600 /data/ssh/ssh_host_dsa_key
    85. chmod 600 /data/ssh/ssh_host_dsa_key.pub
    86. chmod 600 /data/ssh/ssh_host_ecdsa_key
    87. chmod 600 /data/ssh/ssh_host_ecdsa_key.pub
    88. chmod 600 /data/ssh/ssh_host_rsa_key
    89. chmod 600 /data/ssh/ssh_host_rsa_key.pub
    90. chmod 600 /data/ssh/sshd_config
    91. #open ssh 开机启动ssh服务
    92. service daemonssh /system/bin/start-ssh
    93. class main
    94. user root
    95. group root
    96. 修改:device/rockchip/rk3399/rk3399_box.mk 添加
    97. PRODUCT_COPY_FILES += \
    98. $(call find-copy-subdir-files,*,$(LOCAL_PATH)/ssh,system/etc/ssh)
    99. 第一阶段完工,现在已经完全能在局域网内远程ssh安卓设备
    1. 二、内网穿透
    2. 这里需要到自己购买服务器,或者使用花生壳之类的,不建议使用免费,存在安全问题,最好自己搭建;
    3. 代码:FRP开源项目
    4. 服务器:阿里云
    5. 文档:https://gofrp.org/docs/setup/
    6. 1、下载源码
    7. https://github.com/fatedier/frp/releases
    8. 根据云服务器、安卓的cpu架构选择对应的包下载;
    9. (客户端)RK3399 Cpu架构选:frp_0.36.2_linux_arm64.tar.gz
    10. (服务端)阿里云服务器CPU架构选:frp_0.36.2_linux_amd64.tar.gz
    11. 2、安装
    12. 服务端:
    13. #home目录下创建frp目录并拷贝源码到此目录,一定要修改执行权限
    14. [root@ frp]# ll
    15. total 22628
    16. -rwxrwxrwx 1 root root 9953280 Mar 18 11:24 frpc
    17. -rwxrwxrwx 1 root root 9433 Mar 18 11:26 frpc_full.ini
    18. -rwxrwxrwx 1 root root 126 Mar 18 11:26 frpc.ini
    19. -rwxrwxrwx 1 root root 13172736 Mar 18 11:24 frps
    20. -rwxrwxrwx 1 root root 5051 Mar 18 11:26 frps_full.ini
    21. -rwxrwxrwx 1 root root 26 Mar 18 11:26 frps.ini
    22. -rw-rw-r-- 1 root root 11358 Mar 18 11:26 LICENSE
    23. drwxrwxr-x 2 root root 4096 Apr 13 14:19 systemd
    24. 修改配置,在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口:
    25. [common]
    26. bind_port = 7000
    27. 启动服务
    28. ./frps -c ./frps.ini
    29. 客户端(RK3399):
    30. 在system目录下创建frpc并复制代码到该目录下,一定要修改执行权限
    31. rk3399_box:/system/frpc # ls -l
    32. total 42200
    33. __bionic_open_tzdata_path: ANDROID_DATA not set!
    34. __bionic_open_tzdata_path: ANDROID_ROOT not set!
    35. -rw-r--r-- 1 root root 11358 2021-03-19 06:05 LICENSE
    36. -rwxrwxrwx 1 root root 9240576 2021-03-19 06:04 frpc
    37. -rwxrwxrwx 1 root root 130 2021-04-13 06:34 frpc.ini
    38. -rwxrwxrwx 1 root root 9433 2021-03-19 06:05 frpc_full.ini
    39. -rw-r--r-- 1 root root 12320768 2021-03-19 06:04 frps
    40. -rw-r--r-- 1 root root 26 2021-03-19 06:05 frps.ini
    41. -rw-r--r-- 1 root root 5051 2021-03-19 06:05 frps_full.ini
    42. drwxrwxrwx 2 root root 4096 2021-04-13 06:41 systemd
    43. 修改配置:在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x:
    44. [common]
    45. server_addr = x.x.x.x 你的阿里云ip地址
    46. server_port = 7000
    47. tls_enable = true //解决内网防火墙问题导致无法连接服务器
    48. [ssh]
    49. type = tcp
    50. local_ip = 127.0.0.1
    51. local_port = 22
    52. remote_port = 6000
    53. [adb]
    54. type = tcp
    55. local_ip = 127.0.0.1
    56. local_port = 5555
    57. remote_port = 8555
    58. local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。
    59. 启动客户端:
    60. ./frpc -c ./frpc.ini

    最后:通过xshell连接服务器ip,协议为SSH,端口号为6000,5555为安卓adb调试网络端口完美连上Rk3399(你的手机)

  • 相关阅读:
    windows计划任务的配置文件
    C语言之通讯录的实现篇优化版
    关于使用KEIL建立STM32项目(附带建立好的工程以及注意事项)
    【微信小程序】NFC 标签打开小程序
    csp 202109-2 非零段划分
    查看docker资源占用,及释放资源
    什么是Quartz
    【YOLO系列】YOLOv1学习(PyTorch)原理加代码
    学历证书查询 易语言代码
    基于微服务、Java、Springcloud、Vue、MySQL开发的智慧工地管理系统源码
  • 原文地址:https://blog.csdn.net/longmin96/article/details/134463142