Linux
一.前言
我们在Linux开发的过程中,一般都是在虚拟机里面安装交叉编译工具链,进行相应程序的编写以及开发,这时我们就需要将编译好的文件放在开发板里,SSH服务就是一个不错的选择
前提开发板支持 SSH 服务并在启动时已自动开启设置好 IP 地址后就可以作为一台 SSH服务器。可以利用SSH登录开发板进行开发调试,也可用scp进行文件传输
二.准备
1.ubuntu 虚拟机中安装了SSH软件,可以输入以下命令进行确认
ssh –V
如果出现了上图所示的帮助信息代表您的ubuntu虚拟机中已经安装了SSH软件,如果没有安装ssh,请输入如下命令进行安装:
sudo apt-get install openssh-server
2.获取板子的ip
可以先用串口连接到板子,等到板子正常启动输入下面命令来获取板子ip
ifconfig
三.使用
1.命令操作
在虚拟机 linux系统上执行
ssh root@192.168.0.203 //板子ip
首次登录时根据提示输入 yes 确认连接,并输入密码 root。退出时输入 exit 退出
这时我们可以通过虚拟机输入命令来开发板了,注意输出exit 退出
2.从虚拟机上传文件到开发板
以拷贝当前目录 ttyS0 到开发板根目录为例:
输入:
scp ./ttyS0 root@192.168.0.203:/
这里的路径自己可以定,@后面的ip地址为开发板ip
3.从开发板上下载文件到我们虚拟机的操作
输入下面命令:
scp root@192.168.0.203:/test.c /home/linux
如果下载的是文件夹
scp -r root@192.168.0.203:/test /home/linux
下载开发板 /test.c 到虚拟机的/home/linux目录下
四.SSH免密登录
如果每次登录都输入密码挺麻烦的,这里给大家分享一个三步解决免密登录
1.客户端生成公私秘钥
输入下面命令,在本地客户端生成公私钥:(一路回车默认即可)
ssh-keygen
上面会在 /root/.ssh
目录下生成两个秘钥,输入下面命令来查看
- id_rsa (私钥)
- id_rsa.pub (公钥)
cd /root/.ssh
ls -la
2.上传公钥到服务器
这里测试用的服务器地址为:192.168.0.103,也就是我们的开发板的ip,如何不知道可以输入ifconfig命令来查看开发板的ip
在root用户下输入下面命令(sudo -s命令切换root用户)
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.103 //id_rsa.pub此处填自己生成文件的路径,ip也改成自己的开发板ip
中途需要我们输入自己密码,就是安装虚拟机时候设置的密码,也是开机密码,我的为root,看到上面的部分就说明上传成功,如何没有上传成功看一下开发板和虚拟机的ip是否在同一网段
上面这条命令是写到服务器上的ssh目录下去了,我们也可以在开发板的该目录下看有没有authorized_keys
文件,
cd ~/.ssh
vim authorized_keys
3.免密登录测试
客户端(也就是我们的虚拟机)通过ssh连接远程服务器,就可以免密登录了,我发现在非root用户下还需要输入密码,但是切换为root用户就不需要了
ssh root@192.168.0.103