我有一个运行 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 服务的工作方式。
以下方法可修复此问题:
- 关闭 Cygwin
- 转到 Windows 服务(
services.msc
开启Run Dialog
)。 - 停止
CYGWIN sshd
服务 - 双击
CYGWIN sshd
进入服务属性 - 停止服务
- 在选项卡下
Log On
,确保Log on as
设置为Local System account
并Allow service to interact with desktop
选中 - 重启服务
- 重启 Cygwin
- 去喝杯啤酒
答案2
您可以尝试ssh IP_ADDR sh echo lalala
打开 sh 终端。如果失败...您知道原因。此外,给我们提供 /var/log/messages 和 /var/log/secure 的样本(或您认为有用的任何日志)也会很有帮助