SSH远程连接

1 背景

  在多处理器的分布式架构中,不同的ROS系统之间可能会频繁的涉及到文件的传输。
  例如:我们在PC端编写ROS程序,而最终需要在Jetson nano上运行,如何将相关目录以及文件从PC上传到Jetson nano?这便需要使用SSH工具。

2 概念

  SSH(Secure Shell)是一种网络协议,用于通过加密的方式在网络中进行安全的远程登录和数据传输。通过SSH,可以在本地计算机上安全地远程访问另一台远程计算机,并执行命令、管理文件等操作。

3 实现

  SSH实现架构上分为客户端和服务器端两大部分,客户端是数据的发送方,服务端是数据的接收方,当前场景下,我们需要从PC端发送数据到Jetson nano,那么PC端属于客户端,而Jetson nano属于服务端,整个实现具体流程是:

  1. 分别安装SSH客户端与服务端
  2. 服务端启动SSH服务
  3. 客户端远程登陆服务端
  4. 实现数据传输

3.1 安装SSH客户端与服务端

默认情况下,Ubuntu系统已经安装了SSH客户端,因此只需要在Jetson nano安装服务端即可:

sudo apt-get install openssh-server

如果客户端需要自行安装,那么调用如下命令:

sudo apt-get install openssh-client

3.2 服务端启动SSH服务

Jetson nano启动 ssh 服务:

sudo /etc/init.d/ssh start

启动后查看服务是否正常运行:

ps -e | grep ssh

如果启动成功,会包含 sshd 与 ssh 两个程序。

以后需要频繁的使用ssh登录Jetson nano,为了简化实现,可以将Jetson nano的ssh服务设置为开机自启动,命令如下:

sudo systemctl enable ssh

3.3 客户端远程登陆服务端

登陆Jetson nano可以调用如下命令:

ssh 账号@ip地址       #例如:ssh melodic@172.20.10.4

然后根据提示,录入登陆密码,即可成功登陆。

如果退出登陆,可以调用exit命令:

exit

3.4 实现数据传输

上传文件:

scp 本地文件路径 账号@ip:Jetson nano路径

上传文件夹:

scp -r 本地文件夹路径 账号@ip:Jetson nano路径

下载文件:

scp 账号@ip:Jetson nano路径 本地文件夹路径

下载文件夹:

scp -r 账号@ip:Jetson nano路径 本地文件夹路径

4 SSH使用优化

  每次登陆Jetson nano时,都需要输入密码,使用不方便。我们可以借助密钥简化登陆过程,实现免密登陆,提高操作的效率。
  实现思想是:生成一对公钥私钥,私钥存储在本地,公钥上传至服务器,每次登陆时,本地直接上传私钥到服务器,服务器有匹配的公钥就认为是合法用户,直接创建SSH连接即可。具体实现步骤只有两步:

  1. 本地生成密钥对
  2. 将公钥上传至Jetson nano

4.1 生成密钥对

本地客户端生成公私钥:(一路回车默认即可)

ssh-keygen

上面这个命令会在用户目录.ssh文件夹下创建公私钥:
 1.id_rsa   (私钥)
 2.id_rsa.pub   (公钥)

4.2 将公钥上传至Jetson nano

上传命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub 账号@ip

上面这条命令是写到服务器上的ssh目录下,该目录下有文件authorized_keys保存了公钥内容。

以后再登陆Jetson nano就无需录入密码了。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值