config ssh sous cygwin


18

J'ai installé Cygwin sur Windows 7. J'ai effectué l'installation par défaut. Je voudrais utiliser le fichier de configuration ssh (~ / .ssh / config) pour définir l'hôte et les options de connexion.

La commande ssh normale ne parvient pas à trouver la configuration lorsque j'essaie de me connecter: hôte ssh Si je spécifie explicitement le fichier de configuration, tout est OK: ssh -F ~ / .ssh / config

Je ne trouve aucune option pour définir le client ssh, quelque chose comme / etc / ssh

Peut-être que ssh ne sait pas où est mon dossier personnel? (J'ai défini la variable d'environnement HOME dans mon dossier d'accueil)

Réponses:


18

Vous devez d'abord exécuter ssh-host-config . Il générera un fichier "ssh_config" dans / etc / .


4

J'ai eu le même problème. Je voulais utiliser ~ / .ssh / config car j'utilisais déjà ce répertoire pour d'autres applications et je ne voulais pas conserver 2 copies. La création d'un répertoire / etc / ssh_config n'était donc pas la solution idéale.

Comme Fujimoto Youichi le mentionne, ssh regarde / etc / passwd pour votre répertoire personnel et non la variable d'environnement $ HOME .

Les versions actuelles de cygwin (j'utilise 2.6) ne créent plus / etc / passwd dans le cadre de l'installation. Cependant, il est facile d'en créer un nouveau:

    mkpasswd -c -p "$(cygpath -H)" > /etc/passwd
  • -c Ajoute l'utilisateur actuel au fichier passwd
  • -p "$ (cygpath -H)" Ajoute votre répertoire personnel actuel

https://cygwin.com/cygwin-ug-net/mkpasswd.html a plus de détails sur les drapeaux disponibles.

Je n'ai pas regardé le code, mais la préférence de ssh semble être:

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

Donc, si vous souhaitez uniquement utiliser les informations de configuration ssh de ~ / .ssh / config , assurez-vous de supprimer / etc / ssh_config .

Assurez-vous également d'ouvrir une nouvelle fenêtre de terminal cygwin après avoir apporté des modifications, pour qu'elles deviennent disponibles.


semble avoir été déplacé vers / etc / defaults / ssh_config
VeraKozya

1

La commande ssh recherche son fichier de configuration sous le répertoire personnel de / etc / passwd. Ainsi, la définition de la variable HOME ne fonctionnera pas.

Il existe de nombreuses façons, mais nous pouvons y remédier en créant simplement un lien symbolique comme suit.

ln -s ~ / home


0

Les autres réponses n'ont pas fonctionné pour moi. Je viens de créer c: \ cygwin64 \ etc \ ssh_config et je l'ai collé dans le fichier par défaut / exemple suivant:

# 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

J'espère que cela aide la prochaine personne.


0

Selon la réponse acceptée, utilisez la commande pour initialiser:

ssh-host-config

Vous pouvez également créer des vides /etc/ssh_config dans Cygwin, qui fonctionnera de la même manière.

La /etc/ssh_configcréation par ssh-host-configest également vide avec toutes les lignes de commentaire.


Rechargez SSH avec une nouvelle configuration:

Pour effectuer la configuration, vous pouvez simplement terminer l'édition /etc/ssh_configsans redémarrer le service.


1
En quoi cela diffère-t-il de la réponse acceptée?
Greenonline

Je ne peux pas le commenter pour expliquer davantage le principe et comment effectuer la configuration ssh.
Nick Tsai

Vous devez d'abord gagner de la réputation. Essayez d'éditer des messages mal formatés, ou de répondre à une question sans réponse :-)
Greenonline

D'ACCORD! J'ai posté cette réponse car après avoir vérifié la réponse acceptée, j'ai fait plus de sondages dessus. Je vous remercie.
Nick Tsai

0

Cygwin ssh s'attend à ce que la configuration soit /home/$USER. Mais le répertoire personnel "~" dans cygwin est C:/Users/$USER, en effet, /homevide. Vous pouvez avoir les deux C:/Users/$USER/.sshet /home/$USER/.sshêtre des chemins valides, en créant un lien symbolique:

ln -s ~ /home/$USER

0

La réponse actuellement acceptée n'a pas résolu le problème pour moi. Au lieu de cela, j'ai lié le .sshrépertoire du répertoire de base de mon compte d'utilisateur Windows au répertoire de base de mon utilisateur Cygwin:

ln -s /cygdrive/c/Users/<MY-USER>/.ssh /home/<MY-USER>/.ssh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.