通过 socat 使用本地参数运行远程命令?

问题描述 投票:0回答:1

我想在计算机 A 上设置一个 socat 套接字,它将从计算机 B 上的套接字接收一个字符串。该字符串应解释为将在计算机 A 上执行的命令的参数,例如:

电脑A:

socat TCP4-L:3334,fork SYSTEM:"./parsecommand.sh $INCOMING_STRING_OF_ARGS"

电脑B:

socat TCP4:remote.host:3334 SYSTEM:"echo 'out going string of args'"

这是此类动议的正确语法吗?例如,socat 宇宙中是否存在与 $@ 等效的变量,以便我可以用该变量替换 $INCOMING_STRING_OF_ARGS 来实现此操作?

在完整的上下文中:我们想要的是用“ssh”替换运行远程命令的“socat”。我们希望在计算机 A 和计算机 B 之间建立双向连接,将命令从计算机 B 发送到计算机 A,在计算机 A 上执行命令,并将输出返回到计算机 B。

linux unix tcp socat
1个回答
0
投票

看起来您正在寻找反向外壳?

在服务器上:

$ socat tcp-l:5050,reuseaddr,fork system:bash

(使用

openssl-l
而不是
tcp-listen
添加运输安全。)

在客户端:

$ socat - tcp:<server-ip>:5050

或者简单地

netcat

$ nc <server-ip> 5050

或者如果您希望 shell 脚本处理传入的命令:

$ cat parsecommand.sh
#!/bin/bash
#
# WARNING: command injection possible: don't use on production
while read -r remote_cmd; do
    case "$remote_cmd" in
        ls*) bash -c "$remote_cmd";;
        *) ;;
    esac
done

这非常不安全,所以我建议坚持使用 SSH。

© www.soinside.com 2019 - 2024. All rights reserved.