本文是Jetson_Nano无人车开发系列中关于远程开发的分享。
在Linux开发中,大部分情况下由于设备空间有限主板是无法携带显示器的,所以我们需要使用远程的方式进行开发。关于远程软件可以根据其是否带桌面分为两大类。带桌面的远程开发工具有很多,比如:TeamViewer、Nomachine、MobaXterm等。但是带桌面其传输的数据量大,就会导致延迟的现象,使用起来很不爽。不带桌面的也很多,例如:putty、Xshell、等。今天主要是分享vscode与ssh结合使用进行开发,这样既有命令行,也有编辑器,开发起来效率会有显著提升。当然,如果可以熟练使用vim,emacs等命令行编辑器的话开发效率是最高的,但vim的插件配置起来简直是令人头疼,尤其是自动补全插件YouCompletMe,安装起来一言难尽。所以,结合vscode和ssh进行远程开发是一个不错的选择。
win10一般是自带ssh工具,无需专门下载。仅在nano上安装即可。
1、在nano上安装ssh
sudo apt update
sudo apt install openssh-server
2、开启ssh服务
sudo service sshd start
3、确认是否开启
在终端中输入以下命令,如果已启动,会打印:[+] ssh
service --status-all | grep ssh
scp传输命令,如果传输的是文件夹,在命令里添加-r即可
scp [PC文件路径] [nano账号]@[nanoip]:[nano路径] #PC发送给nano
scp [nano账号]@[nanoip]:[nano路径] [PC文件路径] #nano发送给PC
使用ssh登陆的时候需要我们在命令行里输入密码,每次都输就有点麻烦,其实主要还是懒,我们可以添加密钥,这样两台常用机器之间登录就可以省去输密码。
前提:主机A与主机B均安装并打开ssh服务,且在同一局域网下。
主机A与主机B可以都是Linux系统,也可以一个是Windows一个是Linux。在这里,主机A是我的笔记本win10,主机B是Nano。依次执行以下操作,可以免去从主机A登录主机B时的密码。为了方便以后登录,最好是给主机B配置静态IP。
打开cmd,输入以下命令:
ssh-keygen -t rsa
在cmd终端先执行以下内容:
function ssh-copy-id([string]$userAtMachine, $args)
{
$publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
if (!(Test-Path "$publicKey"))
{ Write-Error "ERROR: failed to open ID file '$publicKey': No such file" }
else
{ & cat "$publicKey" | ssh $args $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" }
}
再执行:
ssh-copy-id [nano账号]@[nanoip]
配置好之后登录效果如下:
图3.1:免密登录效果图
注意:remote-ssh一定不要安装最新版本!!!
在Windows安装Vscode,并在插件管理的地方下载插件remote-ssh。
图4.1:下载步骤
安装完成之后,左边栏和左下角会出现图标:
图4.2:remote-ssh使用入口
随便点击上面两个入口中的一个,然后按照vscode的提示一步一步添加要登陆的机器即可。
再次注意:一定不要安装最新版本的remote-ssh插件!!!
添加好机器后,检查用户目录下.ssh文件夹中的config配置文件,正确格式如下:
Host 别名
HostName 配置好的Nano静态IP
User Nano用户名
图4.3:配置文件格式
配置好之后登录效果如下,这是登陆成功nano并在vscode上打开Nano家目录下的.bashrc文件的图示。左下角绿色部分显示的是连接情况。
图4.4:效果展示
remote-ssh也支持使用tmux,点击终端右边的加号就可以看到。
图4.5:效果展示
本文介绍了ssh如何安装与一些常用命令和如何在vscode中使用ssh。
由于笔者水平有限,出现错误也是在所难免,随时欢迎各位的交流与批评指正。
本文为原创博客,如需转载,请联系本人,注明出处即可。