Konfiguracja ssh pod cygwin

18

Mam Cygwin zainstalowany na Windows 7. Dokonałem instalacji domyślnej. Chciałbym użyć pliku konfiguracyjnego ssh (~ / .ssh / config) do ustawienia hosta i opcji połączenia.

Normalne polecenie ssh nie może znaleźć konfiguracji podczas próby połączenia: host ssh Jeśli jawnie podam plik konfiguracyjny, wszystko jest w porządku: ssh -F ~ / .ssh / config

Nie mogę znaleźć żadnej opcji ustawiania klienta ssh, czegoś takiego jak / etc / ssh

Może ssh nie wie, gdzie jest mój folder domowy? (Ustawiłem zmienną środowiskową HOME na mój folder domowy)

Hubidubi
źródło

Odpowiedzi:

18

Najpierw musisz uruchomić ssh-host-config . Wygeneruje plik „ssh_config” w / etc / .


źródło
4

Miałem ten sam problem. Chciałem użyć ~ / .ssh / config, ponieważ już używałem tego katalogu do innych aplikacji i nie chciałem utrzymywać 2 kopii. Dlatego utworzenie katalogu / etc / ssh_config nie było idealnym rozwiązaniem.

Jak wspomina Fujimoto Youichi, ssh sprawdza katalog / etc / passwd w twoim katalogu domowym, a nie zmienną środowiskową $ HOME .

Obecne wersje cygwina (używam wersji 2.6) nie tworzą już pliku / etc / passwd w ramach instalacji. Łatwo jest jednak utworzyć nowy:

    mkpasswd -c -p "$(cygpath -H)" > /etc/passwd
  • -c Dodaje bieżącego użytkownika do pliku passwd
  • -p „$ (cygpath -H)” Dodaje bieżący katalog domowy

https://cygwin.com/cygwin-ug-net/mkpasswd.html zawiera więcej szczegółów na temat dostępnych flag.

Nie spojrzałem na kod, ale preferencja ssh wydaje się następująca:

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

Więc jeśli chcesz używać tylko informacji konfiguracyjnych ssh z ~ / .ssh / config , pamiętaj o usunięciu / etc / ssh_config .

Pamiętaj też, aby po wprowadzeniu zmian otworzyć nowe okno terminalu cygwin, aby stały się dostępne.

Kyleus
źródło
wygląda na to, że został przeniesiony do / etc / defaults /
ssh_config
1

Komenda ssh szuka pliku konfiguracyjnego w katalogu domowym z / etc / passwd. Tak więc ustawienie zmiennej HOME nie będzie działać.

Istnieje wiele sposobów, ale możemy to naprawić, po prostu tworząc dowiązanie symboliczne w następujący sposób.

ln -s ~ / home

Fujimoto Youichi
źródło
0

Inne odpowiedzi nie działały dla mnie. Właśnie utworzyłem c: \ cygwin64 \ etc \ ssh_config i wkleiłem w następującym domyślnym / przykładowym pliku:

# 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,[email protected],hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#
#
Host *
    Port 22

Mam nadzieję, że pomoże kolejnej osobie.

Ryan Shillington
źródło
0

Zgodnie z przyjętą odpowiedzią za pomocą polecenia zainicjuj:

ssh-host-config

Możesz także utworzyć puste /etc/ssh_configw Cygwin, które będą działać tak samo.

/etc/ssh_configTworzenie przez ssh-host-configto również opróżnić z wszystkich Wykomentuj linii.


Załaduj ponownie SSH z nową konfiguracją:

Aby przeprowadzić konfigurację, możesz po prostu zakończyć edycję /etc/ssh_configbez ponownego uruchomienia usługi.

Nick Tsai
źródło
1
Czym różni się to od przyjętej odpowiedzi?
Greenonline
Nie mogę tego komentować w celu dalszego wyjaśnienia zasady i sposobu wykonania konfiguracji ssh.
Nick Tsai,
Najpierw musisz zdobyć reputację. Spróbuj edytować niektóre źle sformatowane posty lub odpowiedzieć na pytanie bez odpowiedzi :-)
Greenonline
DOBRZE! Opublikowałem tę odpowiedź, ponieważ po sprawdzeniu zaakceptowanej odpowiedzi przeprowadziłem więcej ankiet na jej temat. Dziękuję Ci.
Nick Tsai,
0

Cygwin ssh oczekuje, że konfiguracja będzie w /home/$USER. Ale katalog domowy „~” w cygwinie jest C:/Users/$USERrzeczywiście /homepusty. Możesz mieć obie ścieżki C:/Users/$USER/.sshi /home/$USER/.sshbyć poprawnymi ścieżkami, tworząc dowiązanie symboliczne:

ln -s ~ /home/$USER
Mapad
źródło
0

Akceptowana obecnie odpowiedź nie rozwiązała problemu. Zamiast tego dowiązałem symbolicznie .sshkatalog z katalogu domowego mojego konta Windows do katalogu domowego mojego użytkownika Cygwin:

ln -s /cygdrive/c/Users/<MY-USER>/.ssh /home/<MY-USER>/.ssh
tiguchi
źródło