Cygwin 的 ssh 没有读取我的配置文件%HOME%/.ssh/config
。
我已经安装了 Cygwin,但我更喜欢使用 Windows 上的类 DOS 环境。我的电脑中有 Cygwin bin 目录,PATH
而且我经常在 Cygwin 之外使用类 Unix 命令。
因为我不是在登录对于 Cygwin(或执行 .bashrc),我期望命令使用 Windows 设置的环境变量。HOME
设置为C:\Users\Vince
,我期望 ssh 在 中找到配置文件,但除非我使用选项告诉它在那里查找,C:\Users\Vince\.ssh\config
否则这不会发生。-F
我如何知道 Cygwin 的 ssh 在哪里寻找配置文件?可以更改吗?
谢谢。
答案1
这是我根据评论中的问答得出的答案。
默认情况下,Cygwin 将在中创建用户主目录/home/User
,在 Windows 系统上,我们的主目录位于其他地方 -
要解决此问题,请打开/etc/nsswitch.conf
并编辑此行
db_home: windows
关闭所有 Cygwin 终端会话并重新启动。现在再次启动echo $HOME
,您应该看到它现在应该设置为 windows %HOME%
,而不再使用位于/home
编辑
您可能还需要删除
/etc/密码
/etc/组
因为这现在应该推迟到窗口。
答案2
要验证 Cygwin (cygrunsrv) 是否正确安装,请运行 C:\cygwin\Cygwin.bat,并执行以下命令:
cygrunsrv-h 复制代码
如果 Cygwin 安装正确,则所有 Cygwin 帮助选项都会显示在屏幕上。但是,如果此命令返回错误消息,则可能需要重新安装 Cygwin。
要配置 SSHD 服务,请运行 C:\cygwin\Cygwin.bat,并执行以下命令:
ssh 主机配置
运行该命令后,系统会提示以下问题:
- 查询:是否应使用特权分离?:是
- 查询:新的本地帐户“sshd”?:是
- 查询:您想将 sshd 安装为服务吗?
- 查询:是
- 查询:输入守护进程的 CYGWIN 值:[] binmode ntsec
- 查询:您想使用其他名称吗?(是/否) 是/否
此时,如果要使用相同的名称,即 cyg_server,请输入 no。然后会提示您以下问题:
- 查询:创建新的特权用户帐户“cyg_server”?(是/否)是
- 查询:请输入密码:
- 查询: 租客:
但是,如果您想使用不同的名称,请输入 yes。然后系统会提示您以下问题:
- 查询:输入新用户名:cyg_server1
- 查询:重新输入:cyg_server1
- 查询:创建新的特权用户帐户“cyg_server1”?(是/否)是
- 查询:请输入密码:
- 查询:重新输入:
如果配置成功,您将看到以下消息:
主机配置完成。玩得开心!
答案3
这里的部分问题是分配给 $HOME 的破碎、过载的含义。当你混合使用 Cygwin 和 Windows 时,试图将所有用户信息混入一个目录中是一种馊主意(Tm值)。
只要不发生冲突,你可以拥有多个“系统”。当你试图让它们过于紧密地共存时,你会遇到无法解决的问题。这就是为什么 bash、ksh 和 zsh 有自己的配置文件,它们不是 100% 兼容的。
为 CYGWIN 设置一个单独的 /home/USERNAME 目录是个好主意。当您知道有些东西是兼容的并且应该共享时,然后您可以采取措施使其从两个世界均可访问。如果您刚开始使用 Cygwin,则不应尝试使其与 Windows 过于接近。
Windows 通常没有 HOME 目录,但有些软件会寻找它。问题是您实际上有两个家。跳舞要小心。
答案4
我也遇到了同样的问题。
最后我没有使用 Cygwin 的 openssh 包,而是使用了 Windows 的 ssh 命令。因此,安装 Cygwin 的 openssh 包,就这样。