1

我有一个 Linux 机器(Ubuntu Server 13.04),它需要在特定用户帐户下的 Windows 7 机器(安装了 cygwin)上运行作业。我已经设置了一个无密码登录以通过 openSSH 访问 Windows 机器。

我面临的问题如下:当我手动 ssh 进入 Win7 机器并启动作业时,一切都很好。但是,当我使用 ssh winuser@winmachine 命令启动作业时,我最终会连接到特权 sshd 用户“cyg_server”下的 Windows 机器:

$ whoami
linuxuser
$ ssh winuser@Win7
$ whoami
winuser
$ exit
$ ssh winuser@Win7 "whoami; exit"
cyg_server
>> This should be 'winuser' too.

为什么会发生这种情况?我尝试再次运行 ssh-host-config 无济于事。我也看不到 sshd_config 中哪些参数可能会影响这一点。

任何帮助是极大的赞赏!

4

1 回答 1

2

当我使用 SSH 连接到 Cygwin 机器时,我遇到了类似的问题。我以前登录没有问题,直到有一天我注意到我的路径设置不正确。我花了很长时间用 ssh-host-config 重新创建配置文件,只是为了在 ssh 的手册页中找到我的答案:

如果指定了 command,它将在远程主机而不是登录 shell 上执行。

问题是我用来连接机器的别名已更改为自动连接到屏幕会话(screen -DR)。这意味着如果还没有要附加的屏幕会话,则屏幕不会作为用户登录外壳的子进程运行,也不会继承任何相关的用户环境。

当您将命令作为参数提供给 ssh 时,生成的命令将作为由 cyg_server 启动的进程运行。确保 SSH 命令作为登录 shell 的一部分运行应该可以满足您的要求:

ssh winuser@Win7 "bash -l -c 'whoami; exit'"

说明(来自 bash 手册页):

-c string If the -c option is present, then commands are read from string.
-l        Make bash act as if it had been invoked as a login shell.
于 2013-07-02T21:43:31.720 回答