2013-07-01 59 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命令需要正確設置環境變量,將會出現問題。 –