Eu tenho um servidor configurado com acesso SSH via chaves ras. O acesso por senha não é permitido.
Estava funcionando bem. Meu usuário (eu chamei esse USER1) e o root poderia logar com suas respectivas chaves.
Ontem fiz algumas alterações no servidor, seguindo as instruções neste artigo , para conceder a um novo usuário (USER2) acesso limitado a uma pasta (a raiz da web). Também segui as instruções no artigo .
Para resumir essas alterações, criei um novo usuário (USER2) e fiz um bindfs
da raiz 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 de USER1. Então não vou tentar reiterar todos eles aqui.
De acordo com um desses artigos, também adicionei o seguinte ao arquivo sshd_config
:
subsystem sftp internal-sftp
Match User USER2
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Até onde eu sei, essa é a única coisa que mudou desde a última vez que consegui fazer o login com USER1.
Depois de fazer as alterações mencionadas acima, não consegui fazer login no dia seguinte (hoje). Eu recebo o erro, Permission denied (publickey).
.
Eu segui todas as recomendações padrão para definir as permissões e a propriedade corretas para a pasta ~/home/USER1/.ssh
e o arquivo ~/home/USER1/.ssh/authorized_keys
. Embora, nenhum deles tenha sido alterado por minhas ações ontem, então eu basicamente estava reaplicando as permissões existentes.
O conteúdo do meu arquivo /etc/ssh/sshd_config
é:
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 claramente comentado. Eu descomentei isso enquanto tentava corrigir esse problema.
Não sei o que está impedindo que meu USER1 tenha acesso SSH com base em chave. Se houver alguma informação adicional que possa ser útil, por favor me avise.
sshd-config
, configurei o ssh para permitir login de senha e, em seguida, copiei novamente meu arquivo id_rsa.pub (usando ssh-copy-id
) para o servidor.
Isso restaurou meu acesso para USER1 com uma chave.
Eu não entendo totalmente por que esse problema ocorreu e pretendo usar as instruções contidas nesses artigos em servidores adicionais (pois provou ser uma maneira muito útil de conceder a um desenvolvedor (por exemplo) acesso restrito ao SFTP (somente ) para o site, e tem permissão para fazer alterações de arquivo.Então, se alguém tem o tempo para apontar o que o erro foi nas instruções, por favor, faça.
Para evitar que você leia esses artigos, aqui está uma pausa dos passos que eu dei:
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
Em seguida, sudo service ssh restart
Então, minha pergunta modificada é, o que nas etapas acima teria causado user1
de ter acesso ssh com sua chave?
Tags permissions sshd