2013-07-01 33 views
1

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

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

$ whoami 
linuxuser 
$ ssh [email protected] 
$ whoami 
winuser 
$ exit 
$ ssh [email protected] "whoami; exit" 
cyg_server 
>> This should be 'winuser' too. 

为什么会这样发生?我试过再次运行ssh-host-config无济于事。我没有看到哪些参数可能会影响sshd_config中的这个参数。

任何帮助,非常感谢!

回答

2

我在使用SSH连接到Cygwin机器时遇到了类似的问题。我以前没有遇到任何问题,直到有一天我注意到我的路径设置不正确。我花了年龄再造使用ssh主机-config中的配置文件才发现我的man page答案SSH:

如果指定了命令,它是在远程主机的 登录,而不是上执行贝壳。

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

当您提供命令作为ssh的参数时,生成的命令将作为cyg_server启动的进程运行。确保SSH命令正在运行作为登录shell的一部分,应该做你想要什么:

ssh [email protected] "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. 
+0

不知怎的,我错过了-l选项在bash中。但是这很有魅力,非常感谢!与此同时,我通过转到Windows'服务'并更改'sshd'服务的登录名来使用我的用户来解决它。这只是一个黑客攻击,因为它将'cyg_server'链接为始终使用特定的用户帐户,这对我的设置来说没问题,但不是一个通用的解决方案。 – OnMyLittleDuck

+0

很高兴为您服务。这并不是一个坏习惯,但如果shell命令需要正确设置环境变量,将会出现问题。 –