跳到主要内容

Linux远程终端访问工具

· 阅读需 3 分钟
阅读量: 101
阅读人次: 102

在嵌入式 Linux 环境下,如果系统没有 sshd,且由于资源限制(如 Flash 空间不足、内存极小)无法安装完整的 OpenSSH,可以考虑以下几种轻量级、易部署的替代方案。

Telnet

如果嵌入式系统里有 BusyBox(绝大多数都有),那么其实已经拥有了一个 C/S 的 Shell 工具。只需要在目标机(Server)运行 telnetd 即可:

# 在嵌入式设备上启动服务端
telnetd -p 2323 -l /bin/sh

在我们的开发机终端运行:

# 假设调试设备和开发电脑处于同于局域网,且设备的ip为192.168.5.50
telnet 192.168.5.50 2323

所有数据(包括密码)都是明文传输。仅限开发阶段在局域网内使用。

Netcat

netcat 也可以轻松构建一个临时的远程 Shell,不过实际体验没有 telnet 好用。设备端运行:

nc -lp 4444 -e /bin/sh

开发机终端运行:

# 假设调试设备和开发电脑处于同于局域网,且设备的ip为192.168.5.50
nc 192.168.5.50 4444

发送/接收文件

nc 命令不仅可以发消息,同时也能发文件。需要注意的是是接收文件的一方是服务器端,发送文件的一方是客户端。

  1. 服务器端命令:

    nc -l ip地址 端口号 > 接收的文件名
  2. 客户端命令:

    nc ip地址 端口号 < 发送的文件名

服务器端效果:

amass@AmassPC:~$ nc -v -l 12345 > source.tar.gz
Listening on AmassPC 12345
Connection received on localhost 39990

客户端效果:

amass@AmassPC:~$ nc 127.0.0.1 12345 < ./lvgl-8.0.2.tar.gz

注意:这里客户端发送一个文件叫 lvgl-8.0.2.tar.gz,服务器端以文件名 source.tar.gz来保存,也就是说服务器端保存接收的文件名时不一定要使用客户端发送的文件名。

amass@AmassPC:~$ ls -l
总用量 360772
...部分省略...
-rw-r--r-- 1 amass amass 9916533 11月 6 18:00 lvgl-8.0.2.tar.gz
-rw-r--r-- 1 amass amass 9916533 12月 12 18:40 source.tar.gz

根据上面的介绍,当我们需要调试我们自己的服务器或者客户端程序时,又不想自己开发相应的对端,我们就可以使用 nc 命令去模拟。

Dropbear SSH

./configure --host=riscv --prefix=/opt/riscv64-anyka-linux-musl/3rdparty/dropbear-DROPBEAR_2025.89 \
CC=/opt/riscv64-anyka-linux-musl/bin/riscv64-anyka-linux-musl-gcc \
CXX=/opt/riscv64-anyka-linux-musl/bin/riscv64-anyka-linux-musl-g++ \
--enable-static --disable-zlib