O ssh não está mais usando ~ / .ssh / config

20

Não posso mostrar nada que pude. Depois de um pouco de pesquisa, descobri que não está lendo a configuração ssh no meu diretório pessoal.

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
(...)

Quando em um computador idêntico de um amigo, onde tudo funciona, fica assim:

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
(...)

Funcionou anteriormente e não tenho conhecimento de nada que pudesse ter feito para causar esse problema. Como isso pôde acontecer e como corrigi-lo?

Na documentação, apontada por tike, afirma que

Devido ao potencial abuso, esse arquivo deve ter permissões estritas: leitura / gravação para o usuário e não acessível por outros.

Minhas permissões são:

$ ls -la ~/.ssh
total 80
drwx------+ 42 kuba  1029   1428 Jul  1 16:33 ..
-rwx------   1 kuba  1029   1528 May 15 13:07 config
(...)

Eu acho que o problema pode estar com uma confusão sobre o diretório home. Quando forço o arquivo de configuração local, ele começa a funcionar e, de repente, começa a ler/nas/kuba

$ ssh -xvvvF ~/.ssh/config server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
debug1: /Users/kuba/.ssh/config line 1: Applying options for *
debug1: /Users/kuba/.ssh/config line 39: Applying options for bio
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXXX [YYYY.YYY.YYY.YYY] port 22.
debug1: Connection established.
debug1: identity file /nas/kuba/.ssh/id_dsa type -1
                      ^^^^^^^^^^

Mas meu dir de casa parece estar definido ok:

$ cd ~; pwd
/Users/kuba
$ echo $HOME
/Users/kuba
Kuba
fonte
4
Consegui solucionar um problema. Copiei o conteúdo de ~ / .ssh para /nas/kuba/.ssh. Portanto, é realmente um problema com o ssh usar repentinamente o diretório inicial errado, o que provavelmente não é realmente um problema do ssh.
Kuba
Esse último comentário seria uma informação muito útil para editar na pergunta.
David Z
Sua saída indica que você está usando o DSA. Eu encontraria uma maneira de mudar para o RSA, pois é o melhor / mais novo e acredito que o DSA está quebrado.
trysis
3
@Kuba Até onde eu sei, sshignora a HOMEvariável de ambiente. É uma prática ruim ignorar HOME, parece que é o que sshfaz. Se ele não usar HOME, a única alternativa que eu conheço é procurá-lo no uid. Se você tiver duas entradas /etc/passwdidênticas uid, as duas acabarão usando o mesmo .ssh/configarquivo, mesmo que tenham uma casa diferente.
kasperd
11
@ Kasperd, isso deve ser uma resposta. É a única trilha de navegação nesta página que ajudou na minha situação. Obrigado!
Curinga

Respostas:

14

Você parece estar preso entre ssh_config específico do usuário e global.

Verifique as configurações de permissão do arquivo de configuração do usuário ( ~/.ssh/config) e do arquivo de configuração do sistema ( /etc/ssh/ssh_config) para entender em mais detalhes.

Você pode ler mais sobre isso aqui . Praticamente, todos os arquivos no .sshdiretório com base no usuário devem estar no 600 e o configarquivo no 644. Você pode definir isso com os seguintes comandos no diretório inicial:

chmod 600 ~/.ssh/* 
chmod 644 ~/.ssh/config
tique
fonte
Então, eu entendo pelo documento que primeiro ele deve ler a configuração do meu diretório pessoal e, posteriormente, do global (/ etc / ssh / ssh_config). A pergunta é: por que ela está omitindo a minha configuração local?
Kuba
resposta atualizada acima
tike
Eu tentei. Nada mudou. Atualizei minha pergunta com mais detalhes.
Kuba
se você não alterou drasticamente a pergunta acima durante a edição: debug1: /Users/kuba/.ssh/config linha 1: Aplicando opções para * debug1: /Users/kuba/.ssh/config linha 39: Aplicando opções para bio sua configuração de leitura, e seu curinga de configuração parece estar desempenhando um papel. Eu manteria o arquivo de configuração simples para testar primeiro com a porta e o servidor de destino definidos.
tike
Na verdade, mudei drasticamente a questão a ponto de provavelmente encerrá-la. Parece que o ssh está tratando outro diretório como minha pasta pessoal. Algo que não é ~, nem $ HOME.
Kuba
3

verificar permissões

ls -lsd ~/.ssh

e

ls -ls ~/.ssh/*

Se as permissões forem ruins, o cliente ssh não tentará ler dele

Mike
fonte
0 drwx ------ 9 kuba /Users/kuba/.ssh 8 -rwx ------ 1 kuba /Users/kuba/.ssh/config parece que eu sou o dono de todos eles
Kuba
@Kuba try with ls -la ~ / .ssh /
c4f4t0r
ls -la ~ / .ssh total 80 drwx ------ 9 kuba 1029 306 01 de julho 16:33. drwx ------ + 42 kuba 1029 1428 1 de julho 16:33 .. -rw-r - r-- 1 kuba 1029 406 7 de maio 14:53 allowed_keys -rwx ------ 1 kuba 1029 1528 15 de maio 13:07 config -rwx ------ 1 kuba 1029 1675 7 de maio 14:53 id_rsa -rwx ------ 1 kuba 1029 406 7 de maio 14:53 id_rsa.pub -rw-r-- r-- 1 Kuba 1029 16049 22 de maio 09:36 known_hosts
Kuba
@ você tem certeza, você dir usuário doméstico não é para abrir?
C4f4t0r
2
Aquele + ali ... não são ACLs? Esse pode ser o culpado?
Jorge Suárez de Lis
0

Eu tive o mesmo problema e pude corrigi-lo definindo o sinalizador + x no meu ~/.sshdir (0700), enquanto também definia 0600 ~/.ssh/config.

dAngelov
fonte
0

Pelo que vale, eu tive o mesmo problema e o corrigi, fazendo com que o ssh crie novamente a .sshpasta (apenas renomeie sshe execute algum comando ssh) e copie os arquivos necessários posteriormente, com as permissões apropriadas. (configuração com 600).

Aparentemente, o ssh fica desconfiado se a pasta .sshfor modificada de uma maneira que não aprova ...

capitão
fonte
0

O SSH não lerá a configuração local se estiver em um sistema de arquivos montado em NFS. Vale a pena checar, porque todas as permissões podem ser boas e o SSH (pelo menos a versão 6.6) não fornece nenhuma indicação do motivo pelo qual não está lendo a configuração do usuário. (No entanto, ele será lido de um volume NFS se você usar a -Fopção.)

Curt J. Sampson
fonte
0

Encontrei o mesmo problema nos MacOs. Observando as informações de depuração de um login manual (ssh @), descobri que aparentemente o ssh pensava que meu diretório pessoal estava /srv/home/<userid>e procurava o .sshdiretório lá dentro e ignorava o diretório/Users/<userid>/.ssh/

Provavelmente tem algo a ver com o trabalho de configurar os Macs de uma maneira específica, mas eu recomendo verificar isso sshe o sistema operacional concordar com a localização do diretório inicial;)

chw21
fonte
0

Como 'kasperd' indicou em seu comentário sobre a questão, observe que sshnão necessariamente procurará '$ {HOME} /. Ssh / config'. Como foi descoberto, é importante ir mais fundo e saber onde estava o diretório inicial no momento do logon e antes que uma nova HOME fosse declarada.

A dica para analisar a saída de ssh -xvvvF ~/.ssh/config serverfoi muito perspicaz para ajudar a responder a essa mesma pergunta. Ao encontrar-se em um sistema em que dois nomes de usuário diferentes têm o mesmo UID no arquivo '/ etc / passwd', esse problema foi encontrado. Os dois usuários têm diretórios HOME diferentes definidos em '/ etc / passwd'.

Nesse cenário, verifica-se que, se um estiver logado como o segundo usuário com um UID duplicado no arquivo '/ etc / passwd', sshusará o diretório inicial do primeiro usuário com um UID correspondente do usuário executando o SSH comando.

É verdade que esse caso de uso é bastante estranho e não ajuda a maioria das pessoas, mas realmente aconteceu, e essa pergunta / resposta ajudou a resolver um problema.

Kbulgrien
fonte
0

Isso foi causado pelas configurações de permissão de arquivo.

Verifique suas .sshpermissões de diretório e arquivos, também verifique suas configurações de permissão de diretório inicial.

Para mim, eu não quero que outras pessoas vejam meus arquivos pessoais, então removo a xpermissão do diretório da minha casa. O que leva o ssh a encontrar as chaves autorizadas para o caminho errado.

Uma maneira de corrigir isso era definir outro caminho de autoridade /etc/ssh/sshd_config, por exemplo:

AuthorizedKeysFile .ssh / chaves_autorizadas / etc / ssh / chaves_autorizadas

depois copie seu pub para /etc/ssh/authorized_keys, trabalhou para mim.

Jay
fonte