1

特定のユーザーのアカウントで Windows 7 ボックス (cygwin がインストールされている) でジョブを実行する必要がある Linux ボックス (Ubuntu Server 13.04) があります。openSSH 経由で Wi​​ndows マシンにアクセスするためのパスワードなしのログインを設定しました。

私が直面している問題は次のとおりです。Win7 マシンに手動で ssh してジョブを起動すると、すべて問題ありません。ただし、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 の man ページで答えを見つけました。

コマンドが指定されている場合、ログイン シェルの代わりにリモート ホストで実行されます。

問題は、マシンへの接続に使用していたエイリアスが、自動的に画面セッションに接続するように変更されていたことです ( screen -DR)。これは、アタッチする screen セッションがまだない場合、screen はユーザー ログイン シェルの子プロセスとして実行されておらず、関連するユーザー環境を継承していないことを意味していました。

コマンドを引数として ssh に指定すると、結果のコマンドは cyg_server によって開始されたプロセスとして実行されます。SSH コマンドがログイン シェルの一部として実行されていることを確認すると、必要なことが行われます。

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

説明 (bash の man ページから):

-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 に答える