ssh、sftp 远程计算机

Table of Contents

一、远端支持依据

1.1 SSH  包含3个组件

1.2 scp 命令:

1.2.1. 向目标节点传文件 :

1.2.2.从目标节点拉文件 :

1.2.3 免密码

二、远程控制 ssh

三、远端打开rviz显示

四、有些电脑需要

4.1 远程登录linux主机过慢问题

4.2 双机互连

4.3 主机名修改工具hostname

五、直接打开远端文件夹

1.文件夹操作:

2.终端拷贝:

六、查看当前路由器有哪些地址被连接

七、Ubuntu 小结

1.历史记录小结

1.查看历史记录

2.复制代码 

八、sh 免输入密码

8.1 重定向:

8.2 管道

8.3 expect


一、远端支持依据

  1.  ROS最牛逼的地方就是它的通信机制了,不仅仅是进程间通信方便,就连不同设备间通信也很方便,只需添加几行代码,你就可以实现多电脑间的 Topic 共享, 远程控制等功能。
  2. 这里假设我们有两个电脑:电脑 A 为主机端,电脑 B 为控制端。最终要实现在 A 电脑上运行roscore,并且运行 Turtlesim 程序,然后在 B 电脑上运行键盘控制程序,控制 Turtlesim 小乌龟移动。
  1. SSH :是一种加密的网络协议。使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息。要使用 SSH,目标机器应该安装 SSH 服务端应用程序,因为 SSH 是基于客户-服务模式的。 
  2. 当你想安全的远程连接到主机,可中间的网络(比如因特网)并不安全,通常这种情况下就会使用 SSH。

1.1 SSH  包含3个组件

1> ssh 远程登录节点 : ssh 用户名@IP地址 

  1.  不允许空密码或错误密码认证登录
  2. 不允许root用户登录
  3.  有两个版本 ssh,ssh2安全性更高

2> sftp 文件共享连接 , xftp连接就是 sftp实现的    

3> scp  文件拷贝共享  两节点文件的拷贝传输

1.2 scp 命令:

scp [参数] [原路径] [目标路径]

  •     -1  强制scp命令使用协议ssh1  
  •     -2  强制scp命令使用协议ssh2  
  •     -4  强制scp命令只使用IPv4寻址  
  •     -6  强制scp命令只使用IPv6寻址  
  •     -B  使用批处理模式(传输过程中不询问传输口令或短语)  
  •     -C  允许压缩。(将-C标志传递给ssh,从而打开压缩功能)  
  •     -p 保留原文件的修改时间,访问时间和访问权限。  
  •     -q  不显示传输进度条。  
  •     -r  递归复制整个目录。  
  •     -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。   
  •     -c cipher  以cipher将数据传输进行加密,这个选项将直接传递给ssh.
  •     -F ssh_config  指定一个替代的ssh配置文件,此参数直接传递给ssh。  
  •     -i identity_file  从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。    
  •     -l limit  限定用户所能使用的带宽,以Kbit/s为单位。     
  •     -o ssh_option  如果习惯于使用ssh_config(5)中的参数传递方式,   
  •     -P port  注意是大写的P, port是指定数据传输用到的端口号   
  •     -S program  指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

scp -P port source dst

1.2.1. 向目标节点传文件 :

  • 语法:  scp  路径/文件名  用户名@IP地址:目录 
  • Eg: scp 路径/文件名 root@192.168.0.144:/tmp

1.2.2.从目标节点拉文件 :

  • 语法:  scp  用户名@IP地址:路径/文件名  文件目录
  • 注意 :在远程拷贝至目标节点时 ,就等于创建了 一个一模一样的文件 ,此时原文件的文件属性已发生了变化(如文件创建的时间.) 如果不期望文件属性发生变化
  • scp -p  -r   xxx
  • -p 文件属性不发生变化  (建议加上)
  • -r  : 如果拷贝的是目录 需要加-r  ,递归

1.2.3 免密码

 在使用scp拷贝文件时需要手动输入密码才能拷贝成功到远程节点,如果实现定时拷贝或者免密码登录需要创建秘钥免密码认证。 参考:SSH的三个组件ssh、sftp、scp介绍 - 呀,没吸! - 博客园

二、远程控制 ssh

1、ubuntu环境下两台电脑连接到同一局域网内
2、两台电脑分别安装    安装SSH

  • sudo apt-get install openssh-server

3、被控电脑 输入ifconfig -a 查看连接   电脑的主机名和IP地址

  1. 如果电脑连接的是有线网,则显示结果中,etho 部分的 inet addr 后面就是该电脑的 IP 地址;
  2. 如果电脑连接的是无线,则 wlp3s0 部分的 inet addr 后就是 IP 地址。

 eg:地址:10.232.9.79 广播:10.232.9.1 掩码:255.255.255.0

  • ifconfig -a

查看 Hostname,在控制台输入:

  • hostname

4、控制另一台计算机(终端命令)

  • ssh robot@110.232.9.79
  • ssh 主机名@IP地址

5、出来选项,选择yes , 同时输入被控点的用户名密码。

6、ssh -p 22 robot@110.232.9.79 -p加端口号

三、远端打开rviz显示

对多个机器共用一个ROS master很重要。有了这个就可以在sys2的terminal下订阅sys1机器发布的topic了,这样我们就可以用sys2完成一些图形显示的任务

1、被控计算机启动ROS 

2、控制计算机启动ROS(也可放入.bashrc)

  1. export ROS_MASTER_URI=http://10.232.9.79:11311
  2. #//export ROS_MASTER_URI=http://被控计算机IP:11311

3、终端添加环境变量之后,便可在两台计算机上使用相同ROS

  1. export ROS_IP=10.232.9.80   //本地IP

当此方法不可使用rviz 共享环境时

  1. 在控制端添加(.bashrc
  2. export ROS_MASTER_URI=http://10.232.9.79:11311
  3. export ROS_IP="10.232.9.40"
  4. 在被控制端添加(.bashrc
  5. export ROS_MASTER_URI=http://10.232.9.40:11311
  6. export ROS_IP="10.232.9.40"
  7. 其中:
  8. "10.232.9.40" 被控制端IP
  9. 10.232.9.79  主控制端IP

下为 一个自动获取IP的案例

interface=wlp2s0
export ROS_IP=`ifconfig $interface |grep -o 'inet addr:[^ ]*'|cut -d: -f2`
# export ROS_IP=`hostname`
export ROS_HOSTNAME=$ROS_IP
export ROS_MASTER_URI="http://$ROS_IP:11311"

四、有些电脑需要

  • 在master 电脑上  添加客户端的IP 和电脑名称
  • /etc/hosts      10.232.9.40   hehe-pc
  • . /hosts文件可以帮助解决哪些问题

4.1 远程登录linux主机过慢问题

  • 有时客户端想远程登录一台linux主机,但每次登录输入密码后都会等很长一段时间才会进入,这是因为linux主机在返回信息时需要解析ip,如果在linux主机的hosts文件事先加入客户端的ip地址,这时再从客户端远程登录linux就会变很快。
  • 注:这里所说的远程登录不仅仅是ssh,还可能是mysql远程登录,或是文件共享的查询等。

4.2 双机互连

  • 当两台主机只是双机互连时,这时两台主机都需要设置自己的ip,同时在对方的hosts文件里加入自己的ip和主机名。

4.3 主机名修改工具hostname

  • 其实主机名的修改也有专用工具,就是hostname
  • hostname - show or set the system’s host name
  • 显示主机名:
  • # hostname
  • linmu100
  • 此主机的主机名是linmu100,不加参数是用来显示当前主机的主机名;
  • 临时设置主机名:
  • # hostname test100
  • # hostname 注:显示主机名
  • test100
  • 通过hostname 工具来设置主机名只是临时的,下次重启系统时,此主机名将不会存在;
  • 显示主机IP:
  • # hostname -i

五、直接打开远端文件夹

1.文件夹操作:

开文件夹,在左下方可以看到:

Conect to Server

点击后在Server Address中输入:

  • robot sftp://10.232.9.79/home/robot

2.终端拷贝:

跟ssh 协议的格式一样,只是前面命令不一样

  • sftp robot@10.232.9.90   
  • -oPort=远程端口号 

将远端电脑资料拷贝到本地:

  • get xxx.bag   //后面可指定路径

如果想拷贝文件夹,可加  -r

  • get -r test

将本地文件放到远端:

  • put  xxx.bag 远端目录

关闭:

  • exit

六、查看当前路由器有哪些地址被连接

nmap文件  

安装:

  • sudo apt-get install nmap

帮助:

  • nmap -h

使用:

  • nmap -v -sn 192.168.1.0/24

七、Ubuntu 小结

1.历史记录小结

1.查看历史记录

  1. 若想查看最近使用的命令,只需在终端中输入 history 命令。该命令会把刚刚使用的命令把储存在用户的 home 目录下的 .bash_history 文件中的命令调出来,该文件存储用户最近使用过的命令,最多可保留1000个命令的历史记录。
  2. 由于历史命令比较多,可以使用管道把 history 的内容分屏展示出来,比如,可以使用less:
  • $ history | less 

2.复制代码 

  • 这只是查看,若想重用一个使用过的命令,只需在终端中输入感叹号(!)和命令把对应的历史编号,该编号即 history 命令查出来的命令前面的数目编号。比如,我之前使用cp /etc/fstab ~/Desktop 命令作了一个复制操作,用 history 命令查得该历史命令编号为591,那么,使用 !591 命令就能重用该命令了。
  • 如果只是想重复使用最后一个使用的命令,只要使用两个感叹号就能快速执行之。 

$ !! 

  • 另外,如果想在命令历史中搜索一个命令,同时按下 Ctrl + r 键后,输入你感兴趣的命令,命令终端就能为你自动补齐你所要找的命令。同时,使用键盘的上下键也能在最近的历史命令中切换,找到你想重用的命令,按Enter键即可。
     

八、sh 免输入密码

  • 平时在控制台输入指令如:sudo、ssh、ftp或者修改admin权限的文件时候都会要求输入password,但是在she'll脚本运行过程中该如何交互实现自动输入密码呢?

8.1 重定向:

用重定向方法实现交互的前提是指令需要有参数来指定密码输入方式,如ftp就有-i参数来指定使用标准输入来输入密码

shell用重定向作为标准输入的用法是:cmd<<delimiter ,shell 会将分界符delimiter之后直到下一个同样的分界符之前的内容作为输入

ftp -i -n 192.168.21.46 <<EOF
user zjk zjk123
ls
EOF

8.2 管道

管道:跟重定向一样,指令同样要有参数来指定密码输入方式,如sudo的-S参数,passwd的-stdin参数。       所以实现sudo自动输入密码的脚本如下:其中zjk123为密码

  • echo 'zjk123' | sudo -S cp file1 /etc/hosts

实现自动修改密码的脚本写法如下:

  • echo 'password' | passwd -stdin username

8.3 expect

  • expect就是用来做交互用的,基本任何交互登录的场合都能使用,但是需要安装expect包

安装:

  • sudo apt-get install tcl tk expect

案例:

#!/usr/bin/expect
set timeout 3            
spawn ssh nvidia@192.168.0.217   
expect "*password:" 
send "12345678\n"                                       
interact

#sudo chmod 777 auto.sh; sudo chdmo -X auto.sh; 
#./s800_start.sh

connect to server 
sftp://nvidia@192.168.1.238:22222/home/nvidia

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSHSFTP是两种不同的协议,但它们可以在同一个工具中进行使用。 SSH(Secure Shell)是一种用于在网络上安传输数据的加密议,它允许用户通过一个安全的通道远程登录到另一台计算机,并执行命令或管理文件。而SFTPSSH File Transfer Protocol)是在SSH协议基础上建立的文件传输协议,它允许用户通过一个安全的连接在客户端和服务器之间传输文件。 有一些工具或应用程序可以提供SSHSFTP功能的一体化体验。例如,SSH终端SFTP客户端Term APP和MobaXterm都是这样的工具。它们提供了终端模拟器和文件管理器的功能,并且支持通过SSH协议远程连接到其他计算机并进行文件传输。这些工具还可以使用公钥认证来提高安全性,例如使用KeyChain进行公钥认证。 总的来说,通过这些一体化的工具,用户可以在同一个界面中方便地进行SSH远程登录和SFTP文件传输操作,提高了效率和安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SSH终端SFTP客户端Term](https://blog.csdn.net/weixin_35935249/article/details/117746687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [MobaXterm v10.4 免费SSH FTP SFTP TELNET等 多合一客户端 国内下载](https://download.csdn.net/download/zxzx19900109/9983214)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值