ssh、sftp、scp免密码登录

1.问题出现

  首先,我在linux主机上编译好程序,但是每次都要把可执行文件通过filezilla或者scrt拉倒板子中去,十分的麻烦。所以我想到利用makefile中执行shell命令的方法,来实现直接上传文件。

  我看了一些资料,感觉还是对sftp中“服务器”,“客户端”这两个概念不太理解。但是我现在还是知道了如何简便的操作,并且这里我不说服务器和客户端这个名词,免得理解麻烦。

2.问题解决

  1.在我的linux主机上生成ssh key。

ssh-keygen –t rsa

  这里会出现一些问题,一路回车即可,这里我是已经生成过了,所以问我是否覆盖,覆盖即可。

zqh@linux:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zqh/.ssh/id_rsa):
/home/zqh/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zqh/.ssh/id_rsa.
Your public key has been saved in /home/zqh/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QPS0Nbi2WPOmlHBFJgu2OZSA7Lostg87ptwWnfXGP1g zqh@linux
The key's randomart image is:
+---[RSA 2048]----+
| . ..o*.oo=      |
|  o  +.*.*..     |
| .    = +o       |
|  .   .+*        |
| .  . o*S=       |
|.  . o. ++oE     |
|.o  .  ..o+      |
|+=+.    .. o     |
|*+=o        .    |
+----[SHA256]-----+

  2.将linux主机上的公匙上传到arm开发板

zqh@linux:~/.ssh$ cat id_rsa.pub >> authorized_keys    #复制key

  复制key之后将key上传,到arm板的.ssh/文件(这个时候还是问我输入密码)

zqh@linux:~/.ssh$ scp authorized_keys root@172.24.41.12:/root/.ssh
root@172.24.41.12's password:
authorized_keys                                         100%  782     0.8KB/s   00:00

  3.完成

  尝试sftp到arm开发板,发现不需要密码了,那么我现在就可以免密码使用scp直接传文件,非常方便

zqh@linux:~/.ssh$ sftp root@172.24.41.12
Connected to 172.24.41.12.
sftp>

3.Makefile

#General Purpose Makefile for cross compile Linux Kernel module
ifneq ($(KERNELRELEASE),)

obj-m := led.o  #+=是连接字符串

else

OBJ := led
ARCH := arm    
CROSS_COMPILE := /usr/local/arm/arm-linux-gnueabihf-4.9/bin/arm-linux-gnueabihf-
KERN_DIR := /home/zqh/lichee/linux-zero-4.14.y  #选择内核路径
SOURCE := main.c
TARGET := test_led
PWD :=$(shell pwd)   #当前路径
LICHEDIR := /root/led_driver/

all:
        make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERN_DIR) M=$(PWD) modules
        $(CROSS_COMPILE)gcc $(SOURCE) -o $(TARGET)
clean:                                   
        rm -f *.ko *.o *.symvers *.mod.c *.mod.o *.order .*.o.ko.cmd .*.ko.cmd .*.mod.o.cmd .*.o.cmd $(TARGET)        
install:
        scp $(PWD)/$(OBJ).ko root@172.24.41.12:$(LICHEDIR)
        scp $(PWD)/$(TARGET) root@172.24.41.12:$(LICHEDIR)
endif

这样,执行make install时就可以自动将我的文件下载到arm开发板中了。

原文地址:https://www.cnblogs.com/ZQQH/p/8681783.html