Estamos executando o CentOS 6.9 com OpenSSH_5.3p1 e criamos contas chroot para usuários externos com o mesmo diretório inicial (montado em htdocs). O problema é que o arquivo .ssh/authorized_keys2
pertence ao primeiro usuário (e isso já funciona). Como posso fazer isso funcionar para outro usuário?
Tentei adicionar um AuthorizedKeysFile
sshd_config com vários caminhos de arquivo e recebi o erro garbage at end of line
.
Tentei adicionar um AuthorizedKeysFile
in sshd_config
no bloco match do segundo usuário e recebi o erro 'AuthorizedKeysFile' is not allowed within a Match block
.
Não consigo alterar o diretório inicial porque, caso contrário, o caminho será diferente do caminho real de desenvolvimento.
Alguma sugestão de como resolver isso? Posso ter que atualizar o OpenSSH para uma versão mais recente que suporte múltiplas entradas AuthorizedKeysFile
(acho que preciso construí-lo com rpm)? E as atualizações de segurança depois?
Responder1
Uma opção é usar tokens para fornecer a cada usuário um authorized_keys
arquivo exclusivo.
AuthorizedKeysFile
Especifica o arquivo que contém as chaves públicas que podem ser usadas para autenticação do usuário. O formato é descrito na seção AUTHORIZED_KEYS FILE FORMAT do arquivo
sshd(8)
.AuthorizedKeysFile
pode conter tokens no formato%T
que são substituídos durante a configuração da conexão. Os seguintes tokens são definidos:%%
é substituído por um literal%
,%h
é substituído pelo diretório inicial do usuário que está sendo autenticado e%u
é substituído pelo nome de usuário desse usuário. Após a expansão,AuthorizedKeysFile
é considerado um caminho absoluto ou relativo ao diretório inicial do usuário. Vários arquivos podem ser listados, separados por espaços em branco. Como alternativa, esta opção pode ser definida paranone
ignorar a verificação de chaves de usuário nos arquivos. O padrão é.ssh/authorized_keys .ssh/authorized_keys2
.
Ênfase minha.
Então você pode definir:
AuthorizedKeysFile .ssh/%u_authorized_keys
Então, para o usuário, foo
crie um authorized_keys
arquivo .ssh/foo_authorized_keys
.
Uma nota sobre permissões
Decara:
~/.ssh/authorized_keys
...
Se este arquivo, o~/.ssh
diretório ou o diretório inicial do usuário puderem ser gravados por outros usuários, o arquivo poderá ser modificado ou substituído por usuários não autorizados. Neste caso, o sshd não permitirá que ele seja usado, a menos que aStrictModes
opção tenha sido definida comono
.
Portanto, você pode precisar colocar as chaves do lado de fora .ssh/
ou definir StrictModes
como no
. Se você definir StrictModes
para no
garantir que outro usuário não possa criar um authorized_keys
para outra pessoa ou excluir as chaves autorizadas do outro usuário. Provavelmente é melhor fazer algo como:
AuthorizedKeysFile .ssh_%u/authorized_keys
Crie um diretório .ssh_foo/
para user foo
, que só foo
possa ler/gravar.
Você pode escolher se deseja permitir também .ssh/authorized_keys
usando
AuthorizedKeysFile .ssh/authorized_keys .ssh_%u/authorized_keys
Isso permitirá que a forma "normal" authorized_keys
ainda funcione, e um authorized_keys
arquivo deve pertencer ao seu usuário e ter as permissões corretas ou será ignorado. Ainda considere que não deveria ser possível criar um authorized_keys
arquivo para outro usuário, o que poderia significar apenas tocar no arquivo como root para que fique vazio.