O sshd faz verificações de sistema de arquivos ao considerar a aceitação de chaves?

2

Eu sei que o sshd irá recusar a conexão para propriedade incorreta ou modos para o diretório , mas há alguma outra verificação silenciosa e falha relacionada à localização do diretório pessoal do usuário? Ou algum problema de configuração para essa partição?

usando o CentOS Release 6.3 (Final)

Estou tentando configurar um novo usuário, git, com um diretório inicial em uma partição grande, mas o sshd parece falhar silenciosamente.

aqui está minha sequência:

  1. adicionar novo usuário
  2. setup .ssh / authorized_keys com chave pública conhecida
  3. ssh do host remoto

Se eu configurar o novo usuário em / home / git, tudo funcionará bem, mas se eu configurar o usuário com uma pasta home em uma partição diferente, o sshd parecerá falhar silenciosamente.

# userdel -r git
# useradd -m -d /home/git -c "Git Test" -s /bin/bash -g users git
# su -l git
# mkdir .ssh
# chmod 700 .ssh
# cp /tmp/authorized_keys .ssh

Isso funciona muito bem, mas se eu mudar a linha useradd para:

useradd -m -d /space/git -c "Git Test" -s /bin/bash -g users git

Com LogLevel Verbose , a única mensagem no log de autenticação é:

Connection from XX.XX.XX.XX port 50774
Failed publickey for git from XX.XX.XX.XX port 50774 ssh2
Connection closed by XX.XX.XX.XX

Passando -vvv para ssh mostra:

debug1: Offering public key: <USER>/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply

Atualizar : mostrando a propriedade:

# ls -l /space/git
drwx------. 5 git  users 4096 Mar  7 17:43 .
drwxr-xr-x. 7 root root  4096 Mar  7 17:39 ..
drwx------. 2 git  users 4096 Mar  7 17:40 .ssh

Propriedade em / home é idêntica

    
por libjack 07.03.2013 / 19:01

1 resposta

2

Você criou um diretório home do usuário fora de /home e, portanto, o SELinux, sem saber nada sobre suas intenções, negou o acesso a ele.

Para resolver o problema, defina um contexto SELinux permanente para o diretório pessoal e, em seguida, reclassifique os arquivos.

semanage fcontext -a -t user_home_t "/space/git(/.*)?"
restorecon -r -v /space/git

(BTW, /srv é o diretório preferido para essas coisas, em vez de /space .)

    
por 07.03.2013 / 20:15

Tags