此教程的前提在於網路能夠Ping通

已經有交叉編譯器,如arm-linux-gcc在終端上能直接執行

一. 這篇教程在講什麼?

在做一些linux驅動開發的時候,在開發板和主機之間互動、以及檔案傳輸十分的繁瑣。主要有TFTP、NFS方式。

但是個人覺得還是SSH更加方便,配上一些類似Putty、Mobaxterm的軟體既可以控制開發板終端,又可以傳輸檔案。

主要講的就是如何在Linux開發板上部署SSH伺服器。

二. 主要流程 (所有目錄最好與我同步)

1.下載原始碼

zlib

下載網址:

http://www。

zlib。net/fossils/

教程中版本選擇的是: zlib-1。2。11。tar。gz

openssl

下載網址:

https://www。

openssl。org/source/mirr

or。html

PS:有多個映象網址,選擇一個可以使用的

教程中版本選擇的是: openssl-1。1。1-stable-SNAP-20210701。tar。gz

openssh

(前兩者可以看做ssh的依賴)

下載網址:

https://

fastly。cdn。openbsd。org/

pub/OpenBSD/OpenSSH/portable/

教程中版本選擇的是: openssh-8。6p1。tar。gz

2.編譯原始碼

0) 將上述壓縮包均複製到Linux虛擬機器下(目錄隨意,例如我放在/home/ssh-code/),解壓 :

tar -zxvf xxx。tar。gz

分別解壓三個壓縮包

1) 編譯zlib原始碼

cd

/home/ssh-code/zlib-1。2。11

mkdir install_dir

#建立安裝目錄

。/configure ——prefix

=

/home/ssh-code/zlib-1。2。11/install_dir

#執行之後會生成Makefile

vim Makefile

#修改Makfile 將其中gcc、g++都修改為交叉編譯器的名稱。

## 原來程式碼

# 19: CC=gcc

# 。。。

# 30: LDSHARED=gcc -shared -Wl,-soname,libz。so。1,——version-script,zlib。map

# 31: CPP=gcc -E

## 修改如下

# 19: CC=arm-linux-gcc

# 。。。

# 30: LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz。so。1,——version-script,zlib。map

# 31: CPP=arm-linux-gcc -E

make

make install

2) 編譯openssl原始碼

cd

/home/ssh-code/openssl-1。1。1-stable-SNAP-20210701/

mkdir install_dir

。/Configure linux-generic32 no-asm shared no-async ——prefix

=

/home/ssh-code/openssl-1。1。1-stable-SNAP-20210701/install_dir

vim Makefile

# CROSS_COMPILE=arm-linux- #92行,修改成這樣

make

make install

3) 編譯openssh原始碼

cd

/home/ssh-code/openssh-8。6p1

。/configure ——host

=

arm-linux ——with-libs ——with-zlib

=

/home/ssh-code/zlib-1。2。11/install_dir ——with-ssl-dir

=

/home/ssh-code/openssl-1。1。1-stable-SNAP-20210701/install_dir ——disable-etc-default-login

# 注意修改路徑

make

#千萬不要 make install 不然會包含一些配置資訊

4)整理編譯完成的檔案,並打包

#

cd

/home/ssh-code/

mkdir arm-ssh

cd

arm-ssh

mkdir sbin bin etc libexec

cd

/home/ssh-code/openssh-8。6p1

# 分類生成的檔案

cp sshd 。。/arm-ssh/sbin

cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 。。/arm-ssh/bin

cp sshd_config ssh_config 。。/arm-ssh/etc

cp sftp-server ssh-keysign 。。/arm-ssh/libexec

# 生成一些秘鑰,前提是主機上已經有ssh服務

cd

。。/arm-ssh/etc

ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N

“”

#此處ssh-keygen 並非此次編譯生成的

ssh-keygen -t rsa -f ssh_host_rsa_key -N

“”

ssh-keygen -t dsa -f ssh_host_dsa_key -N

“”

cd

。。/。。

tar -zcvf arm-ssh。tar。gz arm-ssh/

#先打包

#複製到開發板(方式自選)

3。移植到開發板

1)部署

# 例如已經複製在開發板 /home/ttt/ssh路徑下

cd

/home/ttt/ssh

tar -zxvf arm-ssh。tar。gz

#解壓指令

# 檢查開發板是否有以下目錄,若沒有則建立

## /usr/sbin

## /usr/local/bin

## /usr/local/etc

## /usr/local/libexec

# 部署到對應資料夾

cd

arm-ssh

cp sbin/* /usr/sbin

cp bin/* /usr/local/bin

cp etc/* /usr/local/etc

cp libexec/* /usr/local/libexec

# 建立軟連線

cd

/bin

ln -s /usr/local/bin/scp

ln -s /usr/local/bin/sftp

ln -s /usr/local/bin/ssh

ln -s /usr/local/bin/ssh-add

ln -s /usr/local/bin/ssh-agent

ln -s /usr/local/bin/ssh-keygen

ln -s /usr/local/bin/ssh-keyscan

# 修改配置檔案

vim /usr/local/sshd_config

# 將PermitRootLogin yes前的註釋“#”號去掉 就可以以root登入

2) 如果開發板使用者沒有密碼可以修改密碼

passwd root

3)測試 在主機上執行

ssh root@192。168。x。xxx

或者藉助其他工具,輸入密碼就大功告成啦~