【问题标题】:Automation of Cygwin configuration with PowerShell使用 PowerShell 自动化 Cygwin 配置
【发布时间】:2023-07-31 17:31:01
【问题描述】:

我已经使用 PowerShell 脚本安装了 Cygwin。

我正在手动执行以下步骤:

  1. 运行一个新的cygwin bash shell(编辑cygwin.bat之后)并输入:

    mount --change-cygdrive-prefix /
    chmod +r /etc/passwd /etc/group
    chmod 755 /var
    
  2. 启动 Cygwin bash shell 并运行 ssh-host-config。对所有密钥生成问题回答“是”。

是否可以在 PowerShell 脚本中自动执行这些操作,例如安装 Cygwin,然后一次性执行步骤 1 和 2?

【问题讨论】:

  • 如果你 cd 进入 cygwin 目录,你可以运行 bash.exe ssh-host-config --yes 不明白为什么你不能把它添加到第 1 步的底部以在 1 步中完成所有操作
  • 如果我运行 "bash.exe ssh-host-config --yes " ,我收到一个错误 "the term bash.exe is not Recognized as a cmdlet" ,还有一件事是我必须 Cygwin.bat 文件而不是 bash.exe 文件
  • 您需要将cd 放入所有可执行文件所在的%cygwinhome%\bin,其中一个是bash.exe。您只需将上述命令附加到您的 cygwin.bat 文件中即可自动生成密钥
  • 非常感谢,最后澄清一下,运行“run ssh-host-config”后,有一个“为守护进程输入CYGWIN的值”的步骤,这一步怎么做在执行期间无需用户输入干预的情况下静默输入值?

标签: powershell cygwin


【解决方案1】:

使用这个命令:

bash.exe ssh-host-config --yes -u "Cygwinuser" -c "binmode ntsec tty" -w "pwd@123"
cygrunsrv -S sshd

稍后去 services.msc 检查服务是否正在运行

【讨论】: