通过SSH连接拒绝“sh”访问

我有一个Ubuntu的服务器和运行Cygwin的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. 

想到这可能是一个用户权限错误,我试着在userlogin时在Cygwin上的客户端上运行sh /home/user/project/clientside 2 5 7 6 9 5 7 IP_ADDR
这按预期工作。

然后我认为这可能是我login到客户端时使用的login错误。 所以我执行这个,而不是:

 ssh user@IP_ADDR 'whoami' 

并找回了user

甚至在Cygwin的客户端上执行了chmod -R 777 /home/user/project之后,就发生了这种情况。

对于脚踢,我在客户端上了Cygwin,并执行了ssh localhost并手动执行了sh /home/user/project/clientside 2 5 7 6 9 5 7 IP_ADDR
这按预期工作。

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

为什么发生这种情况? 我怎样才能解决这个问题?

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

问题是他们的方式Windows服务工作。
这解决了这个问题:

  1. closuresCygwin
  2. 转到Windows服务( Run Dialog services.msc )。
  3. 停止CYGWIN sshd服务
  4. 双击CYGWIN sshdinput服务属性
  5. 停止服务
  6. 在“ Log On选项卡下,确保将“ Log on as设置为“ Local System account并选中“ Allow service to interact with desktop
  7. 重新启动服务
  8. 重新启动Cygwin
  9. 去拿啤酒

你可以试试ssh IP_ADDR sh echo lalala来确实可以打开shterminal。 如果失败…你知道原因。 另外,给我们提供一个/ var / log / messages和/ var / log / secure {或者你认为有用的任何日志会有帮助}