openSSH está ignorando a variável HOME env

3

Eu tenho tentado resolver o problema de Could not create directory com o openSSH instalado via cygwin, e tentei todas as soluções que posso encontrar na internet, mas nenhum deles está funcionando ...

Instalei o cygwin, parece funcionar. Eu instalei o openSSH, que também parece funcionar (eu posso usar o ssh em outras máquinas).

Eu coloquei a pasta cygwin bin no path , então eu posso executar ssh fro da linha de comando, e isso funciona também. Mas toda vez que eu executo isso me dá o erro:

Could not create directory '/home/will/.ssh'
The authenticity of host 'blah (111.222.333.444)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)?

Por que está tentando usar esse diretório? Eu configurei o env. variável HOME to %USERPROFILE% , ele imprime o local correto quando eu o echo, e também criei o .ssh dir e fiz o ssh-keygen lá.

Eu li em algum lugar que eu preciso substituir home/will em cygwin/etc/passwd , mas eu não tenho esse arquivo. E se eu usar mkpasswd -l para gerá-lo, ele não me inclui como usuário, então não há nada que eu possa substituir. Estou realmente perplexo.

O que preciso fazer / definir para que isso funcione?

    
por will 06.07.2015 / 20:41

3 respostas

1

Se você olhar dentro de "/ usr / bin / ssh-user-config", você notará o aviso:

    csih_error_multi \
      "There is no home directory set for you in the account database." \
      'Setting $HOME is not sufficient!'

Sem tocar no banco de dados de usuários do Windows, a maneira mais rápida de definir uma casa diferente é:

 mkpasswd -d -u "Your_Windows_User_Name" > /etc/passwd
or
 mkpasswd -l -u "Your_Windows_User_Name" > /etc/passwd  

provável "will". Como você usuário é local ou é um domínio.

E modifique o último mas um campo "/ home / will" com o valor que você deseja.

Leitura adicional, nos usuários do Windows e Cygwin:

https://cygwin.com/cygwin-ug-net/ntsec.html
https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch
    
por 12.07.2015 / 09:02
1

Você pode editar o arquivo / etc / ssh / ssh_config e adicionar as seguintes propriedades:

IdentityFile /C/Users/username/.ssh/id_rsa
UserKnownHostsFile /C/Users/username/.ssh/known_hosts

Isso ainda imprime o erro Could not create directory '/home/username/.ssh'. Mas, além disso, tudo funciona. Pela maneira que eu estou usando o msys2, mas teoricamente isso deve funcionar para você também.

    
por 25.01.2018 / 00:06
0

Obrigado ao matzeri pela dica de procurar em / usr / bin / ssh-user-conifg. Olhando para lá, percebi que o script está recebendo o diretório pessoal por meio de uma chamada para getent passwd . Quando eu corro isso no meu sistema, vejo que o diretório home está procurando em / home (que no sistema de arquivos do Windows se traduz em C: \ Cygwin64 \ home \ myusername)

Meu diretório pessoal real do Windows (% USERDIR%) é C: \ Users \ myusername, que o Cygwin considera como / cygdrive / c / Users / myusername.

Descobri que, como alternativa à criação de um arquivo / etc / passwd, posso vincular meu diretório pessoal do Windows ao local que o Cygwin deseja:

cd /home
rm -rf myusername
ln -s /cygdrive/c/Users/myusername .

Depois de fazer isso, o SSH não terá problemas para ler o diretório .ssh no meu diretório pessoal do Windows.

    
por 18.11.2016 / 19:53