![ATUALIZAÇÃO: Consegui consertar, mas não sei por que isso ocorreu](https://rvso.com/image/1558060/ATUALIZA%C3%87%C3%83O%3A%20Consegui%20consertar%2C%20mas%20n%C3%A3o%20sei%20por%20que%20isso%20ocorreu.png)
Fundo
Tenho um servidor configurado com acesso SSH via chaves ras. O acesso por senha não é permitido.
Estava funcionando bem. Meu usuário (chamarei USER1) e root poderiam fazer login com suas respectivas chaves.
ALTERAÇÕES QUE POTENCIALMENTE CAUSARAM O PROBLEMA
Ontem fiz algumas alterações no servidor, seguindo as instruçõesneste artigo, para conceder a um novo usuário (USER2) acesso limitado a uma pasta (a raiz da web). Eu também segui as instruções emEste artigo.
Para resumir essas mudanças, criei um novo usuário (USER2) e fiz um bindfs
root da web ( /home/user1/sites/domain/public/
) para /home/user2/domain/public/
). Algumas outras coisas foram feitas, de acordo com esses artigos, mas até onde posso dizer, nenhuma delas afeta as permissões e o acesso SSH do USER1. Portanto, não tentarei reiterar todos eles aqui.
De acordo com um desses artigos, também adicionei o seguinte ao sshd_config
arquivo:
subsystem sftp internal-sftp
Match User USER2
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Pelo que sei, essa é a única coisa que mudou desde a última vez que consegui fazer login com USER1.
EMITIR
Após fazer as alterações mencionadas acima, não consegui fazer login no dia seguinte (hoje). Eu recebo o erro, Permission denied (publickey).
.
Segui todas as recomendações padrão para definir as permissões e propriedade corretas para a ~/home/USER1/.ssh
pasta e ~/home/USER1/.ssh/authorized_keys
o arquivo. Embora nenhum deles tenha sido alterado pelas minhas ações de ontem, basicamente eu estava apenas reaplicando as permissões existentes.
O conteúdo do meu /etc/ssh/sshd_config
arquivo é:
Port 22
Protocol 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
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
UsePAM yes
Subsystem sftp /usr/lib/openssh/sftp-server
Match User USER2
PasswordAuthentication yes
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
AuthorizedKeysFile %h/.ssh/authorized_keys
foi comentado perversamente. Eu descomentei enquanto tentava corrigir esse problema.
Não sei o que está impedindo meu USER1 de ter acesso SSH baseado em chave. Se houver mais alguma informação que possa ser útil, por favor me avise.
ATUALIZAÇÃO: Consegui consertar, mas não sei por que isso ocorreu
Depois de verificar novamente se todas as permissões estavam corretas e se não havia nada estranho no sshd-config
arquivo, configurei o ssh para permitir o login com senha e copiei novamente meu arquivo id_rsa.pub (usando ssh-copy-id
) para o servidor.
Isso restaurou meu acesso ao USER1 com uma chave.
Não entendo totalmente por que esse problema ocorreu e pretendo usar as instruções desses artigos em servidores adicionais (já que provou ser uma maneira muito útil de conceder a um desenvolvedor (por exemplo) acesso SFTP estrito (apenas) ao site e tem permissão para fazer alterações no arquivo. Portanto, se alguém tiver tempo para apontar qual foi o erro nas instruções, faça-o.
Para evitar que você leia esses artigos, aqui está um resumo das etapas que executei:
mkdir -p /home/user2/websites/application1
chown -Rf user2:user2 /home/user2/websites
chmod -Rf 770 /home/user2/websites
Adicione o seguinte a/etc/fstab
bindfs#/home/user1/websites/domain/public /home/user2/websites/application1 fuse force-user=user2,force-group=user2,create-for-user=user1,create-for-group=user1,create-with-perms=0770,chgrp-ignore,chown-ignore,chmod-ignore 0 0
chown user1:user1 /home/user1/websites/domain/public
chmod 770 /home/user1/websites/domain/public
Criado o novo usuário:
sudo useradd -d /home/user2/website/application1 user2
sudo passwd user2
Adicionado ao sshd-config
subsystem sftp internal-sftp
Match User user2
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Então,sudo service ssh restart
PERGUNTA
Portanto, minha pergunta modificada é: o que nas etapas acima teria causado o user1
acesso ssh com sua chave?