2

我创建了一个名为 /usr/sbin/helloworld 的简单 shell 脚本

#!/bin/bash
echo "Hello World"
mkdir ~/itran
read -p "Say Hello : " hello
echo "$hello"
exit 0

我创建了 /etc/xinetd.d/testservice-map 如下

service testservice
{
    port            = 4079
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = root
    server          = /usr/sbin/helloworld
    server_args     = test
}

并在 /etc/services 中添加以下行

testservice 4079/tcp

我已经为我的主机分配了一个 IP,并添加了一条 IPTABLE 规则以将该 IP 的 22 端口上的请求重定向到 localhost 的 4079 端口

现在,当我使用来自另一台机器的 putty SSH 到该 IP 时,从日志 (/var/log/messages) 我可以看到我的服务正在主机上执行,但我看不到“Hello World”消息。目录“itran”已创建,但我看不到回显消息,也无法输入任何值。

我是新手。如果需要更多信息,请告诉我。任何帮助将非常感激。

4

1 回答 1

1

您遇到的问题是 ssh 比您预期的要多得多。

会发生什么:

  • 你开始 ssh
  • 您的 ssh 客户端发送会话启动
  • 您的脚本启动并发送“Hello world”
  • 您的 ssh 客户端需要一个服务器公钥,但得到了 hello world
  • 您的 ssh-client 终止

使用 ssh 客户端上的一些详细选项,您可能会观察到这种行为。

现在,其他客户端没有第一次协议握手。如果您有 telnet 客户端,您可能会得到预期的结果

telnet 127.0.0.1 4079

否则,请尝试nc.

于 2018-07-27T14:47:54.550 回答