【MindStudio】【OpenSSH】海思SOC環境準備(linux + android)

      網友投稿 1336 2025-03-31

      1?????? 背景

      當前Mindstudio及配套ADK需要從ADX切換到SSH,Mindstudio需要通過SSH登錄對應的AI-Host。對于C7x、MDC、DC環境,可以通過系統包管理器apt/yum等直接安裝openSSH-server;而海思Soc Linux/Android環境是精簡過的嵌入式環境,必須通過源碼編譯的方式進行安裝。此處以CS形態為例。

      2?????? Linux環境openSSH服務搭建

      2.1?????? 交叉編譯

      2.1.1?????? 版本選擇及源碼準備

      OpenSSH-:

      https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz

      OpenSSH依賴2個開源庫:zlib與OpenSSL

      zlib 1.2.11:? https://zlib.net/zlib1211.zip

      OpenSSL 1.1.1g: ?https://www.openssl.org/source/openssl-1.1.1g.tar.gz

      同樣下載源碼壓縮包至本地。

      2.1.2?????? 交叉編譯環境準備

      獲取發布包中的對應交叉編譯器,CS形態使用的交叉編譯器為aarch64-himix210-linux。交叉編譯環境這里以x86_64的Ubuntu18.04為例。

      1

      tar xvf aarch64-himix210-linux.tgz

      進入解壓后的目錄,并使用root用戶權限執行安裝腳本(可以參考readme指定其他安裝路徑):

      1

      cd aarch64-himix210-linux

      2

      sudo ./aarch64-himix210-linux.install

      此時交叉編譯器已被安裝至/opt/hisi-linux/x86-arm路徑下,所需的環境變量也已自動更新到/etc/profile中。執行以下命令應該能正常顯示gcc版本:

      1

      source /etc/profile && aarch64-himix210-linux-gcc -v

      2.1.3?????? 交叉編譯

      解壓zlib的源碼壓縮包,并進入解壓后的目錄。

      1

      tar xf zlib-1.2.11.tar.gz

      2

      cd zlib-1.2.11/

      配置交叉編譯器及安裝路徑:

      1

      CC=aarch64-himix210-linux-gcc ./configure --prefix=$HOME/install/zlib

      編譯及安裝:

      1

      make -j

      2

      make install

      解壓openssl的源碼壓縮包,并進入解壓后的目錄。

      1

      tar xf openssl-1.1.1g.tar.gz

      2

      cd openssl-1.1.1g

      配置編譯選項、交叉編譯器及安裝路徑:

      1

      ./config no-asm shared --cross-compile-prefix=aarch64-himix210-linux- --prefix=$HOME/install/openssl

      將生成的Makefile中的所有"-m64"修改為"-mabi=lp64":

      編譯及安裝:

      1

      make -j # 注:make -j并行編譯可能會失敗,若失敗可直接make

      2

      make install

      解壓openssh的源碼壓縮包,并進入:

      1

      tar xf openssh-8.0p1.tar.gz

      2

      cd openssh-8.0p1

      配置:

      1

      ./configure --host=aarch64-linux --with-libs --with-zlib=$HOME/install/zlib --with-ssl-dir=$HOME/install/openssl CC=aarch64-himix210-linux-gcc AR=aarch64-himix210-linux-ar --prefix=$HOME/install/openssh --exec-prefix=$HOME/install/openssh --disable-etc-default-login --disable-strip

      編譯及安裝:

      【MindStudio】【OpenSSH】海思SOC環境準備(linux + android)

      1

      make -j

      2

      make install

      解壓openssh的源碼壓縮包,并進入:

      1

      tar xf openssh-8.0p1.tar.gz

      2

      cd openssh-8.0p1

      配置:

      1

      ./configure --host=aarch64-linux --with-libs --with-zlib=$HOME/install/zlib --with-ssl-dir=$HOME/install/openssl CC=aarch64-himix210-linux-gcc AR=aarch64-himix210-linux-ar --prefix=$HOME/install/openssh --exec-prefix=$HOME/install/openssh --disable-etc-default-login --disable-strip

      編譯及安裝:

      1

      make -j

      2

      make install

      install時若提示無權限創建/var/empty(privilege separation directory),則可以使用sudo創建后再使用chown改變owner。

      再次執行make install,此時若提示ssh-keygen執行失敗,這是由于arm架構的可執行文件不識別,可暫時忽略,因為所需的文件(sshd, sftp-server, ssh-keygen等)都已安裝至目標路徑。

      2.2?????? 部署

      參考MindStudio文檔中的海思Soc環境準備一節。在剛才的交叉編譯服務器上安裝NFS服務,將剛才的安裝路徑($HOME/install)開放出去。

      使用root賬號,通過telnet登錄海思Soc環境,在海思Soc的板端掛載該遠程路徑。

      切換至掛載目錄,部署zlib和openssl相關產物:

      1

      cp zlib/lib/libz.so.1 /usr/lib

      2

      cp openssl/lib/libcrypto.so.1.1 /usr/lib

      切換至OpenSSH安裝路徑,OpenSSH相關產物如下:

      部署所需的可執行文件:

      1

      2

      3

      使用ssh-keygen生成秘鑰對:

      1

      2

      參考該鏈接創建sshd組。

      在/etc/passwd中加上:

      sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

      在/etc/group中加上:

      sshd:x:74:

      創建privilege separation directory:

      1

      拷貝config至/etc并修改:

      1

      修改點1:將拷貝后的文件中的

      #PermitRootLogin prohibit-password

      改為

      PermitRootLogin yes

      使得可以使用root賬號的賬號密碼登錄。

      修改點2:在subsystem條目配置正確的sftp-server路徑:

      Subsystem?????? sftp??? /usr/lib/sftp-server

      修改完成后啟動sshd,需指定config和key的路徑:

      1

      2.3? 驗證

      在其他主機上使用ssh遠程登錄海思Soc板端執行命令或使用sftp訪問文件:

      3?????? Android環境OpenSSH服務搭建(V900版本/96CV300版本)

      3.1???? 下載V900/96CV300源碼

      3.2???? 修改device.mk文件

      v900文件路徑:device/huanglong/shaolingun/device.mk

      96CV300文件路徑:device/huanglong/wudangstick/device.mk

      在device.mk中增加如下編譯選項:

      # Openssh

      PRODUCT_PACKAGES += \

      scp \

      sftp \

      ssh \

      sshd \

      sshd_config \

      ssh-keygen \

      start-ssh

      3.3???? 修改externel/openssh下的Android.mk文件

      在sshd模塊的編譯選項中,添加:

      LOCAL_CFLAGS += -DSSHDIR=\"/data/run/ssh\"

      3.4???? 編譯andorid源碼,重新燒寫鏡像,

      v900編譯指令

      a) source build/envsetup.sh

      b) lunch shaolingun_SEC-eng

      c) ./device/huanglong/build/build.sh

      2. 96cv300編譯指令

      a) source build/envsetup.sh

      b) lunch wudangstick_SEC-eng

      c) ./device/huanglong/build/build.sh

      3.5???? 創建目錄結構,以下操作都在板端進行

      mkdir -p /data/ssh/empty

      chmod 700 /data/ssh

      chmod 700 /data/ssh/empty

      其中,?/data/ssh用來存放密鑰文件和sshd配置文件

      3.6?? 生成配置文件

      cat /system/etc/ssh/sshd_config | \

      sed 's/#PermitRootLogin yes$/PermitRootLogin without-password/' | \

      sed 's/#RSAAuthentication yes/RSAAuthentication yes/' | \

      sed 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' | \

      sed 's/PasswordAuthentication no/#PasswordAuthentication no/' | \

      sed 's/#PermitEmptyPasswords no/PermitEmptyPasswords yes/' | \

      sed 's/#ChallengeResponseAuthentication yes/ChallengeResponseAuthentication yes/' | \

      sed 's/#UsePrivilegeSeparation yes/UsePrivilegeSeparation no/' | \

      sed 's;/usr/libexec/sftp-server;internal-sftp;' > \

      /data/ssh/sshd_config

      chmod 600 /data/ssh/sshd_config

      這里需要說明的是我們需要配置為root使用, 同時又不需要密碼.另外, 需要注意配置文件中指定了AuthorizedKeysFile為/data/ssh/authorized_keys

      3.7????? 生成秘鑰

      在Windows/Linux上通過下面的命令來生成密鑰

      ssh-keygen -t rsa -C "your_email_address"

      上面的命令會在主目錄下生成.ssh目錄, 目錄包含id_rsa(私鑰)和id_rsa.pub(公鑰)兩個文件

      然后通過adb等命令將id_rsa.pub上傳至Android中(!!!文件要對應于AuthorizedKeysFile!!!)

      adb push id_rsa.pub /data/ssh/authorized_keys

      chmod 600 /data/ssh/authorized_keys

      chown root:root /data/ssh/authorized_keys

      cd?? /data/ssh/

      ssh-keygen? -t?rsa? -f? ssh_host_rsa_key

      ssh-keygen? -t?dsa? -f? ssh_host_dsa_key

      這里passphrase默認為空

      3.8?????? 啟動

      mkdir -p /data/local/userinit.d

      cat /system/bin/start-ssh | \

      sed 's;/system/etc/ssh/sshd_config;/data/ssh/sshd_config;' > \

      /data/local/userinit.d/99sshd

      chmod 755 /data/local/userinit.d/99sshd

      通過上面的命令單獨生成一個啟動腳本,后就可以通過執行下面的腳本來啟動sshd

      /data/local/userinit.d/99sshd

      實際操作過程中如果出現問題也可以通過下面的命令以調試的方式來啟動sshd

      /system/bin/sshd -f /data/ssh/sshd_config -D -ddd

      執行的時候第一次會報/data/run/ssh/empty不存在的問題,創建該文件夾并修改權限即可。

      mkdir -p /data/run/ssh/empty

      chmod 600 /data/run/ssh/empty

      chown root:root /data/run/ssh/empty

      備注:/system/bin/sshd -f /data/ssh/sshd_config -D -ddd 這個是調試命令,client端連接上后就斷開。如果想服務持續運行,把后面的 -D -ddd刪除,或者直接運行啟動腳本

      Android Linux

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:WPS表格如何進行乘法運算教程(wps表格怎么乘法計算)
      下一篇:Word文檔中插入分頁符并對分頁方式進行設置的方法(word文檔的分頁符如何設置)
      相關文章
      日韩亚洲国产综合高清| 亚洲冬月枫中文字幕在线看| 亚洲人成www在线播放| 亚洲一级特黄大片在线观看| 日本亚洲欧美色视频在线播放| 亚洲男人天堂2018av| 亚洲国产精品yw在线观看| 亚洲日本视频在线观看| 91精品国产亚洲爽啪在线观看| 国产亚洲精久久久久久无码| 在线日韩日本国产亚洲| 亚洲伊人久久精品影院| 精品久久久久久亚洲| 亚洲av中文无码乱人伦在线咪咕 | 在线精品亚洲一区二区三区| 国外亚洲成AV人片在线观看| 亚洲 自拍 另类小说综合图区 | 久久精品国产亚洲av麻豆| 亚洲人成亚洲人成在线观看| 精品亚洲永久免费精品| 亚洲A∨无码无在线观看| 亚洲天堂中文资源| 亚洲一区二区三区首页| 亚洲女人初试黑人巨高清| 久久精品国产亚洲AV忘忧草18| 亚洲一级免费毛片| 亚洲一区二区三区高清在线观看| 亚洲精品无码你懂的| 最新亚洲人成网站在线观看 | 亚洲人午夜射精精品日韩| 亚洲综合国产精品第一页| 在线精品亚洲一区二区小说| 国产成人亚洲精品影院| 久久久久一级精品亚洲国产成人综合AV区| 国产亚洲欧美日韩亚洲中文色| 亚洲精品无码久久毛片| 亚洲中文字幕无码专区| 伊人亚洲综合青草青草久热| 久久亚洲欧洲国产综合| 亚洲高清视频在线| 亚洲AV网一区二区三区|