configuração do ssh no cygwin

18

Eu tenho o Cygwin instalado no Windows 7. Fiz a instalação padrão. Eu gostaria de usar o arquivo de configuração ssh (~ / .ssh / config) para definir o host e as opções de conexão.

O comando ssh normal não consegue encontrar a configuração enquanto tento conectar: ​​host ssh Se eu especificar explicitamente o arquivo de configuração, tudo ficará bem: ssh -F ~ / .ssh / config

Não encontrei nenhuma opção para configurar o cliente ssh, algo como / etc / ssh

Talvez o ssh não saiba onde está minha pasta pessoal? (Eu configurei a variável de ambiente HOME para minha pasta pessoal)

Hubidubi
fonte

Respostas:

18

Você deve executar o ssh-host-config primeiro. Ele irá gerar um arquivo "ssh_config" em / etc / .


fonte
4

Eu tive o mesmo problema. Eu queria usar ~ / .ssh / config porque já estava usando esse diretório para outros aplicativos e não queria manter duas cópias. Portanto, criar um diretório / etc / ssh_config não era a solução ideal.

Como Fujimoto Youichi menciona, o ssh procura em / etc / passwd o seu diretório pessoal e não a variável de ambiente $ HOME .

As versões atuais do cygwin (estou usando o 2.6) não criam mais o / etc / passwd como parte da instalação. No entanto, é fácil criar um novo:

    mkpasswd -c -p "$(cygpath -H)" > /etc/passwd
  • -c Adiciona o usuário atual ao arquivo passwd
  • -p "$ (cygpath -H)" Adiciona seu diretório pessoal atual

https://cygwin.com/cygwin-ug-net/mkpasswd.html possui mais detalhes sobre os sinalizadores disponíveis.

Eu não olhei o código, mas a preferência do ssh parece ser:

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

Portanto, se você deseja usar apenas as informações de configuração ssh em ~ / .ssh / config , exclua / etc / ssh_config .

Além disso, certifique-se de abrir uma nova janela do terminal cygwin após fazer as alterações, para que eles fiquem disponíveis.

kyleus
fonte
parece que foi realocado para / etc / defaults / ssh_config
VeraKozya
1

O comando ssh procura seu arquivo de configuração no diretório inicial em / etc / passwd. Portanto, definir a variável HOME não funcionará.

Existem várias maneiras, mas podemos corrigi-lo simplesmente fazendo um link simbólico da seguinte maneira.

ln -s ~ / home

Fujimoto Youichi
fonte
0

As outras respostas não funcionaram para mim. Acabei de criar c: \ cygwin64 \ etc \ ssh_config e colei no seguinte arquivo padrão / de exemplo:

# 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

Espero que ajude a próxima pessoa.

Ryan Shillington
fonte
0

De acordo com a resposta aceita, use o comando para inicializar:

ssh-host-config

Você também pode criar vazio /etc/ssh_configno Cygwin, que funcionará da mesma forma.

A /etc/ssh_configcriação de ssh-host-configtambém está vazia com todas as linhas de comentário.


Recarregue o SSH com a nova configuração:

Para efetuar a configuração, você pode concluir a edição /etc/ssh_configsem reiniciar o serviço.

Nick Tsai
fonte
1
Como isso difere da resposta aceita?
Greenonline
Não posso comentar sobre o assunto para explicar melhor o princípio e como efetuar a configuração do ssh.
Nick Tsai
Você precisa ganhar alguma reputação primeiro. Tente editar algumas mensagens mal formatadas ou respondendo a um sem resposta pergunta :-)
Greenonline
ESTÁ BEM! Postei essa resposta porque, depois de verificar a resposta aceita, fiz mais pesquisas. Obrigado.
Nick Tsai
0

Cygwin ssh espera que o config para estar em /home/$USER. Mas o diretório inicial "~" no cygwin é C:/Users/$USER, de fato, /homevazio. Você pode ter ambos C:/Users/$USER/.sshe /home/$USER/.sshcaminhos válidos, criando um link simbólico:

ln -s ~ /home/$USER
Mapad
fonte
0

A resposta atualmente aceita não resolveu o problema para mim. Em vez disso, vinculei o .sshdiretório do diretório inicial da minha conta de usuário do Windows para o diretório inicial do usuário do Cygwin:

ln -s /cygdrive/c/Users/<MY-USER>/.ssh /home/<MY-USER>/.ssh
tiguchi
fonte