ssh 连接上“sh”访问被拒绝

ssh 连接上“sh”访问被拒绝

我有一个运行 Cygwin 的 ubuntu 服务器和一个 Windows XP 客户端。服务器ssh进入客户端并尝试使用以下命令执行带有一些参数的 shell 脚本:

ssh user@IP_ADDR 'sh /home/user/project/clientside 2 5 7 6 9 5 7 IP_ADDR'

IP_ADDR客户端的 IP 地址在哪里?
但是,在执行此操作时,我收到以下错误:

Access is denied.

我认为这可能是用户权限错误,于是我尝试sh /home/user/project/clientside 2 5 7 6 9 5 7 IP_ADDR在客户端 Cygwin 上运行,并以 身份登录user
一切按预期运行。

然后我想这可能是我 ssh 进入客户端时使用的登录错误。所以我执行了这个:

ssh user@IP_ADDR 'whoami'

然后回来了user

即使我chmod -R 777 /home/user/project在 Cygwin 的客户端上这样做了之后,这种情况仍然发生了。

为了好玩,我在客户端上安装了 Cygwin,并ssh localhost手动执行了sh /home/user/project/clientside 2 5 7 6 9 5 7 IP_ADDR
这按预期工作了。

但是,当我ssh IP_ADDR从 Cygwin 执行并ssh localhost手动执行时sh /home/user/project/clientside 2 5 7 6 9 5 7 IP_ADDR,我得到了同样的Access is denied.错误。

为什么会发生这种情况?我该如何解决?

顺便说一下,服务器和客户端都有彼此的 rsa 公钥,用于无密码 ssh

答案1

问题在于 Windows 服务的工作方式。
以下方法可修复此问题:

  1. 关闭 Cygwin
  2. 转到 Windows 服务(services.msc开启Run Dialog)。
  3. 停止CYGWIN sshd服务
  4. 双击CYGWIN sshd进入服务属性
  5. 停止服务
  6. 在选项卡下Log On,确保Log on as设置为Local System accountAllow service to interact with desktop选中
  7. 重启服务
  8. 重启 Cygwin
  9. 去喝杯啤酒

答案2

您可以尝试ssh IP_ADDR sh echo lalala 打开 sh 终端。如果失败...您知道原因。此外,给我们提供 /var/log/messages 和 /var/log/secure 的样本(或您认为有用的任何日志)也会很有帮助

相关内容