cygwin下的ssh配置


18

我在Windows 7上安装了Cygwin。我进行了默认安装。我想使用ssh配置文件(〜/ .ssh / config)设置主机和连接选项。

尝试连接时,普通的ssh命令无法找到配置:ssh host如果我明确指定配置文件,则一切正常:ssh -F〜/ .ssh / config

我找不到设置SSH客户端的任何选项,例如/ etc / ssh

也许ssh不知道我的主文件夹在哪里?(我已将HOME环境变量设置为我的主文件夹)

Answers:


18

您必须先运行ssh-host-config。它将在/ etc /中生成一个“ ssh_config”文件。


4

我遇到过同样的问题。我想使用〜/ .ssh / config,因为我已经将该目录用于其他应用程序,并且不想维护2个副本。因此,创建/ etc / ssh_config目录不是理想的解决方案。

正如Fujimoto Youichi提到的那样,ssh会在/ etc / passwd中查找您的主目录,而不是$ HOME环境变量。

当前的cygwin版本(我正在使用2.6)不再在安装过程中创建/ etc / passwd。但是,很容易创建一个新的:

    mkpasswd -c -p "$(cygpath -H)" > /etc/passwd
  • -c将当前用户添加到passwd文件中
  • -p“ $(cygpath -H)”添加您的当前主目录

https://cygwin.com/cygwin-ug-net/mkpasswd.html包含有关可用标志的更多详细信息。

我没有看过代码,但ssh的偏好似乎是:

  1. / etc / ssh_config
  2. 〜/ .ssh / config

因此,如果只想使用〜/ .ssh / config中的ssh配置信息,请确保删除/ etc / ssh_config

另外,请确保在进行更改后打开一个新的cygwin终端窗口,以使它们可用。


似乎它已经重定位到/ etc / defaults / ssh_config
VeraKozya

1

ssh命令从/ etc / passwd在主目录下查找其配置文件。因此设置HOME变量将不起作用。

有很多方法,但是我们可以通过如下简单地建立符号链接来解决它。

ln -s〜/ home


0

其他答案对我不起作用。我刚刚创建了c:\ cygwin64 \ etc \ ssh_config并粘贴到以下默认/示例文件中:

# This is the ssh client system-wide configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.

# Configuration data is parsed as follows:
#  1. command line options
#  2. user-specific file
#  3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.

# Site-wide defaults for some commonly used options.  For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.

# Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   Port 22
#   Protocol 2,1
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#
#
Host *
    Port 22

希望对下一个人有帮助。


0

根据接受的答案,通过使用命令来初始化:

ssh-host-config

您也可以/etc/ssh_config在Cygwin中创建空白,其作用相同。

/etc/ssh_config通过建立ssh-host-config也与空出来线的所有评论。


使用新配置重新加载SSH:

要完成配置,您可以完成编辑/etc/ssh_config而无需重新启动服务。


1
这与公认的答案有何不同?
Greenonline

我无法对此发表评论以进一步解释其原理以及如何实现ssh config。

您需要首先赢得一些声誉。尝试编辑一些格式错误的帖子,或回答一个未解决的问题:-)
Greenonline

好!我发布了此答案,因为在检查了接受的答案之后,我对其进行了更多调查。谢谢。

0

Cygwin ssh希望配置位于/home/$USER。但是cygwin中的主目录“〜”为C:/Users/$USER,确实/home为空。通过创建符号链接,可以同时拥有这两个路径C:/Users/$USER/.ssh/home/$USER/.ssh使其成为有效路径:

ln -s ~ /home/$USER

0

当前接受的答案对我来说没有解决问题。相反,我将该.ssh目录从Windows用户帐户的主目录链接到Cygwin用户的主目录:

ln -s /cygdrive/c/Users/<MY-USER>/.ssh /home/<MY-USER>/.ssh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.