一.SSH简介

SSH是一种网络协议,用于计算机之间的加密通讯,即我们可以在一台计算机上通过SSH协议登陆另一台计算机,并对其进行操作。作者在这里使用的是SSH在Ubuntu中的免费开源实现,通过SSH协议访问ROS小车,并实现远程的Rviz。

说明:在帖子中只有SSH的账号密码登陆。

(以下是比较官方的说法)Secure Shell(缩写为 SSH),由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为一项创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境。最初的 SSH 协议是由芬兰的一家公司的研究员 Tatu Ylönen 于 1995 年设计开发的,但是因为受版权和加密算法等等的限制,现在很多人都转而使用 OpenSSH。OpenSSH 是 SSH的替代软件包,而且是开放源代码和免费的。 

二.准备工作

1)服务端与客户端

在通过SSH访问ROS小车系统前,我们需要搞清楚服务端与客户端的概念。

服务端:ROS小车

客户端:我们的ubuntu电脑

(以下为一些定义,赶时间请跳过)

服务端指提供服务的一端。它会等待客户端的访问,并为其提供服务。服务端一般是 sshd 进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。

客户端指面向用户的一端。它会向服务端发出连接请求,服务端响应请求,两者建立连接。

2)ip地址

在进行SSH连接前,我们需要知道服务端与客户端的ip地址。通过以下命令进行查看。

ifconfig

例如,我的ROS小车(服务端)ip地址为192.168.43.198,ubuntu电脑(客户端)ip地址为192.168.43.114。

三.安装SSH

1)服务端安装

需要在ROS小车安装服务端

sudo apt-get install openssh-server

2)客户端安装

一般Ubuntu系统默认自动安装有SSH客户端,因此大家根据需求在自己的ubuntu安装客户端。

sudo apt-get install openssh-client

3)检查是否安装完成

dpkg -l | grep ssh

  

4)其他SSH指令

启动ssh服务:sudo /etc/init.d/ssh start

关闭ssh服务:sudo /etc/init.d/ssh stop

重启ssh服务:sudo /etc/init.d/ssh restart

四.SSH连接(帐号密码)

ssh 服务端id@服务端ip地址

例如:我的小车id为nano,ip地址为192.168.43.198,那么我的命令为:

ssh nano@192.168.43.198

  

 SSH默认端口号为22,如果需要更改,请按照以下操作:

(1)服务端更改端口号

gedit /etc/ssh/sshd_config

修改15行 #Port 22 值为端口号,然后重启SSH

sudo /etc/init.d/ssh restart

(2)客户端运行指令

ssh -p 端口号 服务端id@服务端ip地址

问题:

连接报错

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!

It is also possible that a host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

SHA256:6zKiuPSPE90dB6PNCj1fICgA1DTrTxPFiVbl82+sS0E.

Please contact your system administrator.

Add correct host key in /root/.ssh/known_hosts to get rid of this message.

Offending RSA key in /root/.ssh/known_hosts:4

RSA host key for has changed and you have requested strict checking.

Host key verification failed.

解决办法:运行指令打开know_hosts文件,并清空know_hosts中的数据

sudo gedit /home/.ssh/knows_hosts

报错原因: 服务器的公钥(public key)发生了变化(比如重装了系统或重装了openssh服务),而客户端存储的信息没有发生变化。

五.SSH运行导航并远程使用Rviz

注意:首先要确保自己的ubuntu电脑有ROS,并可以正常启动

(1)修改服务端.bashrc文件(ROS小车)

gedit ~/.bashrc

在后面加上

export ROS_HOSTNAME=服务端ip

export ROS_MASTER_URI=http://服务端ip:11311

(2)修改客户端.bashrc文件(自己的ubuntu电脑)

gedit ~/.bashrc

在后面加上 

export ROS_HOSTNAME=客户端ip

export ROS_MASTER_URI=http://服务端ip:11311

例如我的电脑是这样 :

 

(3)运行导航

注意:导航中不能自动开启rviz节点

客户端(自己的ubuntu电脑)通过SSH远程连接服务端(ROS小车),并启动导航相关的节点。

(4)开启Rviz

客户端(自己的ubuntu电脑)直接开启Rviz,注意不是在连接SSH后开启Rviz,导入导航的rviz文件,选择各部分订阅话题即可。

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: