O ssh usa o diretório inicial errado no Cygwin

12
$ ssh [email protected]

Could not create directory'/cygdrive/c/Documents and Settings/vidar kongsli/.ssh'.
The authenticity of host 'login.somehost.no (...)' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.

$ set | grep HOME

HOME=/cygdrive/d/home/vidar
HOMEDRIVE=C:
HOMEPATH=/cygdrive/d/home/vidar

$ ls ~/.ssh

id_rsa  id_rsa.pub

Alguma idéia de por que o ssh não usa a variável de ambiente $ HOME ao tentar localizar ~ / .ssh?

(editar: formatação fixa)


fonte

Respostas:

9

Dê uma olhada /etc/passwd. Verifique se a entrada corresponde ao diretório inicial esperado. É o penúltimo campo da entrada do usuário.

Ronald Blaschke
fonte
4

Se sua $HOMEvariável estiver definida, mas o ssh não a reconhecer, coloque esta linha em /etc/nsswitch.conf:

db_home: /%H

Isso definirá o diretório inicial do Cygwin sem exigir a existência de um arquivo / etc / passwd.

Oliver Crow
fonte
Eu configurei HOMEa %USERPROFIEL%em variáveis de ambiente antes do cygwin instalado. Então ... / home / <myusername> não foi criado ( /etc/passwd cannot be found). E não é possível usar a chave ssh em% USERPROFILE%. db_home: /%Hcorrija o problema perfeitamente. Muito obrigado!
Marslo 30/09/18
2

Em /etc/nsswitch.conf:

db_home:  windows

Consulte A configuração db_home . Isso diz ao Cygwin para usar apenas o %USERPROFILE%diretório do Windows como Cygwin $ HOME.

Isso é necessário se, por exemplo, você deseja compartilhar as mesmas chaves SSH entre o git (GitHub Enterprise) e o SSH para vários sistemas Unix / Linux locais.

A configuração %HOME%no nível do sistema operacional não funcionou (mesmo que $HOMEno bash reflita corretamente a configuração).

Você pode ver na pergunta original que o SSH está tentando atualizar o diretório inicial do Windows, o que é a versão mais antiga do Vidar C:\Documents and Settings\vidar kongsli. Nas versões atuais (7 ou mais, eu acho), o equivalente é C:\Users\%USERNAME%(ou, se o Windows não estiver instalado em C :, %SystemDrive%\Users\%USERNAME%).

Charlie Reitzel
fonte
0

A variável é HOMEexportada? Tente: export HOMEentão sshnovamente.

Greg Hewgill
fonte
0

Situado db_homeem /etc/nsswitch.confque o caminho para sua casa. Este é o método recomendado pelo MSYS2.

Adicionar uma HOMEvariável de ambiente também funciona .

O Git-for-Windows inclui envin db_home, que deve ler sua HOMEvariável bash, no entanto, não é confiável .

VarunAgw
fonte
1
Editando como? O que você definiu db_home?
Andrew Schulman
@AndrewSchulman Para o diretório que eu quero como meu diretório pessoal?
VarunAgw
1
Uau! Isso é muita informação útil. Obrigado por editar @ go2null :)
VarunAgw
Esta resposta não lista o que o bug vinculado "recomendado" recomenda. O bug vinculado diz:db_home: windows cygwin desc
Gordon