A resposta de Linus Kendall deve funcionar em sistemas mais antigos, mas em máquinas Linux mais recentes é problemático; no meu servidor web baseado em arch linux, a configuração resulta em pam pedindo meu código autenticador e minha senha depois de receber minha chave ssh (ou seja, eu preciso de todos os 3).
Uma solução mais simples que evita esse problema e que deve funcionar em todos os sistemas é alterar a entrada em /etc/pam.d/sshd
para:
auth sufficient pam_google_authenticator.so
E, em seguida, para fazer as mesmas edições em '' / etc / ssh / sshd 'que Linus mencionou:
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no
Isso deve pedir seu token autenticador depois que o servidor aceitar sua chave pública. Não deve pedir sua senha.
Como uma nota lateral, se você deseja ter uma conta de usuário sftp, provavelmente será necessário ignorar o google authenticator para fazê-lo funcionar. Aqui está uma sugestão de como fazer isso com segurança usando uma cadeia sftp. Em etc/ssh/sshd_config
:
Subsystem sftp internal-sftp
Match User ftp-user
PasswordAuthentication yes
AuthenticationMethods password
ChrootDirectory /path/to/ftp/dir
ForceCommand internal-sftp
Você precisará fazer as permissões em / path / to / ftp / dir root somente (por exemplo, chown root:root /path/to/ftp/dir
, chmod 755 /path/to/ftp/dir
. Todos os pais acima desse diretório também precisam de permissões seguras. A maneira como eu costumo fazer isso é fazendo o diretório chroot /home/shared/user
, criando um diretório lá (eg 'data') e então montando qualquer diretório que eu queira compartilhar assim: sudo mount -o bind /path/to/ftp/dir /home/shared/user/data
Se você seguir todas essas etapas, você terá login de chave pública + google authenticator para seus usuários ssh e uma conta sftp protegida por senha funcional para transferência de dados.