【问题标题】:Simple and fast shell remote [closed]简单快速的外壳远程[关闭]
【发布时间】:2023-04-23 07:25:01
【问题描述】:

我正在寻找一种快速简便的方法来远程 shell 到我的树莓派(不需要密码并像 ssh 一样加密),因为我的项目需要每秒多次运行简单的命令到树莓派,有什么建议吗? 更新:方法必须在C++中使用

【问题讨论】:

  • 看看在主模式下使用ssh (ssh -M)。这将创建一个到具有套接字的机器的 SSH 连接,该套接字可供将来的连接尝试使用,而无需重新进行身份验证。

标签: c++ shell ssh raspberry-pi remote-access


【解决方案1】:

原始 TCP 套接字。再简单不过了。

服务器端:

#!/bin/bash
mkfifo /tmp/fifo.$$
netcat -l -p 12345 < /tmp/fifo.$$ | sh - &> /tmp/fifo.$$
rm /tmp/fifo.$$
  • 创建命名管道
  • 侦听端口 12345。连接时,从管道读取并写入标准输出。
  • 将 netcat 的标准输出重定向到写入管道的 shell。 基本上这会创建一个 netcat sh duplex。

客户端: netcat ip.address 12345

  • 在标准输入上执行命令
  • 标准输出上的输出

客户端也可以通过使用套接字在 C++ 中实现。 Boost.Asio iostreams 非常简单。 http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/example/cpp03/iostreams/daytime_client.cpp

#include <boost/asio.hpp>
boost::asio::ip::tcp::iostream s("ip.address", "12345");
s << "command\n";
s >> output;

【讨论】:

  • 我在服务器端有问题,我将您的代码复制到 abc.sh,然后运行它./abc.sh,但过了一会儿它没有启动(我 nmap 它并没有出现端口 12345)请帮忙!