Autenticação SSH Public Key - funciona somente após um login físico

5

Estou tentando conectar via SSH ao meu servidor Ubuntu com autenticação de chave pública. Por alguns motivos, recebo uma "Permissão negada (publickey)". no cliente, sempre que eu executo

ssh -i ~/.ssh/id_rsa <username>@<ip> -p <port> .

O auth.log no meu servidor tem a seguinte saída:

sshd[1425]: Connection closed by <client-ip> [preauth]

Mas assim que faço login fisicamente em meu servidor, com o nome de usuário samer, a seguinte conexão ssh dos sucessos de meus clientes. Mas assim que faço logout fisicamente, a próxima sessão ssh do meu cliente falha.

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port <port>
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no

PermitEmptyPasswords no
ChallengeResponseAuthentication no

PasswordAuthentication no

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM no

ClientAliveInterval 30
ClientAliveCountMax 99999    

Alguma pista de por que isso pode acontecer? Ou você tem alguma recomendação de acordo com a segurança? Obrigada!

    
por caiuspb 28.08.2014 / 17:57

1 resposta

12

Como mencionado no comentário, você está usando um diretório pessoal criptografado e provavelmente está usando o pam_mount para montá-lo.
pam_mount monta a partição usando a senha adquirida durante o login. Como você está tentando fazer login via chaves públicas ssh, há dois problemas:

  1. Não há senha sendo enviada durante a autenticação de chave pública, portanto, não é possível montar seu diretório inicial usando-a.
  2. Ao usar pam_mount, seu diretório inicial é montado após login, mas sshd precisa obter seu login authorized_keys antes e, portanto, não está montado.

Qualquer um desses problemas é suficiente para impedir que funcione.

A única solução é obter suas chaves públicas fora do diretório inicial. Isso é bem simples.

Primeiro, copie o arquivo authorized_keys do diretório inicial:

cp -a /home/$USER/.ssh/authorized_keys /home/$USER-authorized_keys

Em seguida, informe sshd para usar esse arquivo adicionando o seguinte a /etc/ssh/sshd_config (substitua a entrada existente, se houver):

AuthorizedKeysFile .ssh/authorized_keys /home/%u-authorized_keys

E devolve sshd .

No entanto, observe que isso não montará seu diretório pessoal. Seu diretório pessoal ainda precisa da sua senha para descriptografar. Dependendo de como você configurou o pam_mount, ele pode solicitar sua senha ou simplesmente deixá-lo em um shell com sua casa desmontada.

    
por 28.08.2014 / 20:09