Alterando AuthorizedKeysFile em 'sshd_config' não resolvendo falha de autenticação de chave pública com home criptografado

1

O caso parece simples. Eu tenho minha pasta pessoal criptografada usando eCryptFS no "servidor", parece que:

/home/<user_name>/.Private on /home/<user_name> type ecryptfs (ecryptfs_check_dev_ruid,
ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=<...>,
ecryptfs_fnek_sig=<...>)

Como o arquivo "authorized_keys" está em ~/.ssh por padrão, o que não é descriptografado antes de eu realmente efetuar login, movi esse arquivo para /home/ssh/<user_name>/authorized_keys . As permissões de /home/ssh/<user_name> são 755 e a do arquivo authorized_keys é 644. O arquivo contém a chave pública da máquina que gostaria de efetuar login.

Em seguida, alterei a opção "AuthorizedKeysFile" em /etc/ssh/sshd_config para /home/ssh/%u/authorized_keys . Como é sugerido por este manual: link e este post: link . Eu procurei por este problema aqui, mas na maior parte tenho as mesmas instruções. No entanto, ainda não consigo fazer o login sem uma senha.

Em seguida, fiz alguns testes, gerando um par de chaves SSH no servidor (no qual gostaria de usar o SSH) e copiei a chave pública para /home/ssh/<user_name>/authorized_keys . Então, descobri que não consigo nem fazer o login em localhost sem usar minha senha, nessa máquina do servidor. Portanto, presumo que por algum motivo o daemon SSH não carregou o arquivo authorized_keys em todos . Eu também tentei colocar o arquivo no local original que é ~/.ssh , ainda não consigo fazer a autenticação de chave pública.

Anexado é meu sshd_config :

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# 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 without-password
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  /home/ssh/%u/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
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

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

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

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

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

O arquivo authorized_keys está localizado aqui:

$ ll
total 24K
drwx------  2 root        root         16K Feb 26 19:23 lost+found
drwxrwxr-x  3 root        root        4.0K Mar  1 13:12 ssh
drwx------ 22 <user_name> <user_name> 4.0K Mar  1 13:42 <user_name>
$ cd ssh
$ ll
total 4.0K
drwxr-xr-x 2 <user_name> <user_name> 4.0K Mar  1 13:12 <user_name>
$ cd <user_name>
$ ll
total 4.0K
-rw-r--r-- 1 <user_name> <user_name> 790 Mar  1 13:32 authorized_keys
$

Eu também tentei alterar as permissões (do diretório e do arquivo) para 700 e 600, também não funcionou ...

    
por bfrguci 01.03.2016 / 22:45

1 resposta

2

Sua pergunta está faltando informações do log produzido por sshd :

/var/log/auth.log

Mensagem de erro diz algo sobre permissões incorretas em /home .

A página de manual para sshd adiciona essa condição:

~/.ssh/authorized_keys

If this file, the ~/.ssh directory, or the user's home directory are writable by other users, then the file could be modified or replaced by unauthorized users. In this case, sshd will not allow it to be used unless the StrictModes option has been set to “no”.

Portanto, a opção é corrigir permissões ou se você precisa ter o grupo /home gravável, use StrictModes no no seu sshd_config .

    
por 01.03.2016 / 23:07