远程命令行控制SSH

第一次接触SSH是ROS小车作为服务端,通过ubuntu电脑客户端访问。因为机器人接键盘和屏幕操作起来不方便,所以使用SSH进行连接,方便对小车的操作。

1.服务端安装

打开终端查看ssh是否安装

sudo service ssh status

如果未安装

sudo apt update
sudo apt install openssh-server

然后启动 SSH 服务并设置自启动

sudo service ssh start
sudo systemctl enable ssh

2.客户端安装

打开终端查看ssh是否安装

sudo service ssh status

如果未安装

sudo service ssh start
sudo apt-get install openssh-client

3.SSH使用

调用如下命令:

ssh -参数 账号@ip地址

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

3.1ssh命令常用参数

  • -l <username>`:指定要登录的远程主机上的用户名。例如,`ssh -l user remote_host`。
  • -p <port>:指定连接的端口号。默认端口是 22。例如,`ssh -p 2222 user@remote_host`。
  • -i <identity_file>:指定用于身份验证的私钥文件。例如,`ssh -i ~/.ssh/id_rsa user@remote_host`。
  • -v、-vv、-vvv:增加调试输出的详细程度,用于排查连接问题。例如,`ssh -vvv user@remote_host`。
  • -X:启用 X11 转发,使得远程主机上的图形应用可以在本地显示。例如,`ssh -X user@remote_host`。
  • -Y:启用受信任的 X11 转发,相比 `-X` 提供更高权限的 X11 转发。例如,`ssh -Y user@remote_host`。
  • -C:启用压缩,减少数据传输量,有助于提高低带宽连接的性能。例如,`ssh -C user@remote_host`。
  • -T:禁止伪终端分配,通常用于不需要交互式终端的命令。例如,`ssh -T user@remote_host`。
  • -N:不执行远程命令,只建立连接。常用于端口转发。例如,`ssh -N -L 8080:localhost:80 user@remote_host`。
  • -L <local_port>:<remote_host>:<remote_port>:设置本地端口转发,将本地的 `<local_port>` 端口转发到远程主机的 `<remote_host>:<remote_port>` 端口。例如,`ssh -L 8080:localhost:80 user@remote_host`。
  • -R <remote_port>:<local_host>:<local_port>:设置远程端口转发,将远程主机的 `<remote_port>` 端口转发到本地的 `<local_host>:<local_port>` 端口。例如,`ssh -R 9090:localhost:3000 user@remote_host`。

3.1.1示例

1. **基本连接**:

   ```bash
   ssh user@remote_host
   ```

   连接到 `remote_host` 上的 `user` 用户。

2. **指定端口连接**:

   ```bash
   ssh -p 2222 user@remote_host
   ```

   使用端口 2222 连接到 `remote_host` 上的 `user` 用户。

3. **使用私钥文件进行身份验证**:

   ```bash
   ssh -i ~/.ssh/id_rsa user@remote_host
   ```

   使用 `~/.ssh/id_rsa` 私钥文件进行身份验证。

4. **启用 X11 转发**:

   ```bash
   ssh -X user@remote_host
   ```

   启用 X11 转发,以便在本地显示远程主机上的图形应用。

5. **本地端口转发**:

   ```bash
   ssh -L 8080:localhost:80 user@remote_host
   ```

   将本地计算机的 8080 端口转发到远程主机的 80 端口。

6. **远程端口转发**:

   ```bash
   ssh -R 9090:localhost:3000 user@remote_host
   ```

   将远程主机的 9090 端口转发到本地计算机的 3000 端口。

3.2实现数据传输

  • 上传文件:
scp 本地文件路径 账号@ip:路径
  • 上传文件夹:
scp -r 本地文件夹路径 账号@ip:路径
  • 下载文件:
scp 账号@ip:路径 本地文件夹路径
  • 下载文件夹:
scp -r 账号@ip:路径 本地文件夹路径

3.3使用密钥免密连接

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

3.3.1本地生成密钥对

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

ssh-keygen

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

  1. id_rsa (私钥)
  2. id_rsa.pub (公钥)

3.3.2将公钥上传至服务端

上传命令:

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

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

以后再登陆树莓派就无需录入密码了。

4.使用Xshell进行SSH连接

4.1Xshell软件下载安装

Xshell是一款功能强大的终端模拟器,支持SSh2,SSh3,SFTP,TELNET,RLOGIN和SERIAL。和其他的SSH客户端相比,Xshell更加注重用户体验的一些东西,比如其现代化的界面,多种语言包括简体中文支持,代码高亮等,对于新手非常友好。

https://www.xshell.com/zh/free-for-home-school/

4.2Xhell连接Linux

  • 打开Xshell,点击文件,新建

  • 输入名称,主机(Linux的IP,使用ifconfig命令查看),连接协议为SSH,端口一般为22

就会出现配置好的机器
 

  • 输入用户名和密码

 用户名

密码为linux电脑密码

就会出现配置好的机器
 

  • 最后连接成功,就可以使用了

5. 使用VSCODE进行SSH连接

  • 下载插件Remote-ssh

  • 安装说明

  • 按F1,找Remote-SSH

  • 找到add new ssh host

输入ssh 用户名@地址,回车

  • 选择保存路径

选择第一个将ssh配置保存到该路径下,然后重启一下vscode

就会出现配置好的机器

  • 点击上面箭头,输入密码,出现下图,就代表已经配置成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值