【问题标题】:CYGWIN windows cygrunsrv sshd server and MS-DOS style path detected检测到 CYGWIN windows cygrunsrv sshd 服务器和 MS-DOS 样式路径
【发布时间】:2013-12-10 16:13:27
【问题描述】:

这个想法是消除当一个人连接到在 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/profile 等

测试用例:

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

CYGWIN 环境变量永远不会包含正确的值,无论您在哪里设置它...

【问题讨论】:

    标签: windows cygwin warnings dos sshd


    【解决方案1】:

    问题出在 sshd 是通过在 CYGWIN 终端 ssh-host-config。如果未使用 -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
    

    据我所知,在不卸载服务并使用 -c 标志重新安装的情况下修改 CYGWIN 环境变量是不可能的! 但是,如果您编辑此处找到的注册表值,则可以在安装后修改服务的参数:

    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
    

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

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 2014-09-28
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多