1

アイデアは、Windows ボックス (sshd) でサービスとして実行されている cygwin デーモンに接続するときに表示される CYGWIN 警告を取り除くことです。

問題のあるケース:

> ssh -i <my private key> me@server "ls d://path//to//folder//"
cygwin warning:
  MS-DOS style path detected: d://path//to//folder//
  Preferred POSIX equivalent is: /cygdrive/d/path/to/folder/
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
  http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
[...]

この警告により、実行されたリモート コマンドが「0」ステータス コードではなく警告を返す可能性があります。

この警告は、CYGWIN 環境変数に次の値を設定するように指示しています: "nodosfilewarning"

問題は、次のいずれかの場所に設定しても、リモート環境に入らないことです。

  • Windows ユーザー環境変数
  • Windows システム環境変数
  • ~/.bashrc
  • ~/.profile
  • /etc/bashrc
  • /etc/プロファイルなど

テストケース:

> ssh -i <my private key> me@server "env | grep CYGWIN"
CYGWIN=CYGWIN sshd

CYGWIN 環境変数には、設定した場所に関係なく、適切な値が含まれることはありません...

4

1 に答える 1

2

この問題は、sshdがcygrunsrv.exeで実行されているという事実に起因します。これは、CYGWIN ターミナルssh-host-configでの呼び出しからセットアップされます。-cフラグで変更されていない場合、またはssh-host-configスクリプトの実行から照会されたときに変更されていない場合、インストール時に CYGWIN 環境変数のデフォルト値を設定します。

*** Query: Enter the value of CYGWIN for the deamon: [] CYGWIN sshd

オプションと詳細については、. /bin.ssh-host-configスクリプトを参照してください。

 --cygwin -c <options>  Use \"options\" as value for CYGWIN environment var

私の知る限り、サービスをアンインストールせずに CYGWIN 環境変数を変更し、 -cフラグを使用してインストールをやり直すことはできません! ただし、ここにあるレジストリ値を編集すると、インストール後のサービスのパラメータを変更できます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\sshd\Parameters\Environment CYGWIN

エントリを変更し、値の末尾にnodosfilewarningを追加すると、問題が解決します!

テストケースを再度実行することで、実際に機能したことを確認できます。

> ssh -i <my private key> me@server "env | grep CYGWIN"
CYGWIN=CYGWIN sshd nodosfilewarning

それ以降、問題のあるケースを実行しても、警告メッセージは表示されなくなります!

于 2013-11-25T19:24:59.780 に答える