检测到CYGWIN windows cygrunsrv sshd服务器和MS-DOS样式路径

时间:2013-11-25 19:25:00

标签: windows cygwin warnings dos sshd

这个想法是当一个人连接到在windows box(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 / profile中 等

测试用例:

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

无论您在何处设置它,CYGWIN环境变量都不会包含正确的值...

1 个答案:

答案 0 :(得分:2)

问题来自 sshd cygrunsrv.exe 一起运行的事实,该事件是通过在CYGWIN终端 ssh-host-config <中调用而设置的/ em>的。如果未使用 -c 标志修改,它会在安装时设置CYGWIN环境变量的默认值... 或者从 ssh-host-config 脚本执行中查询时未修改:

*** 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

从那时起,执行有问题的案例不应再显示警告信息了!