Acabei de criar um novo servidor Ubuntu virtual e estou no processo de fortalecê-lo para uso em produção. Atualmente tenho uma conta root. Eu quero fazer o seguinte:
- Crie um novo usuário (vamos chamá-lo
jim
para o resto). Eu quero que eles tenham um/home/
diretório. - Dê
jim
acesso SSH. - Permitir
jim
fazersu
root, mas não executarsudo
operações. - Desative o acesso SSH root.
- Mova o SSHd para uma porta não padrão para ajudar a interromper ataques brutos.
Meu problema está nos dois primeiros itens. Já encontrei useradd
mas por algum motivo não consigo logar como usuário criado com ele por SSH. Preciso vencer o SSHd para permitir isso?
O SSH é muito exigente quanto às permissões de diretório e arquivo. Certifique-se de que:
Copie sua chave pública no arquivo authorized_keys.
Não há necessidade de adicionar o usuário ao /etc/ssh/ssh_config.
Edite (como root)
/etc/ssh/sshd_config
. Anexar o seguinte a ele:Port 1234
faz com que o SSH escute na porta 1234. Você pode usar qualquer porta não utilizada de 1 a 65535. Recomenda-se escolher uma porta privilegiada (porta 1-1024) que só pode ser usada pelo root. Se seu daemon SSH parar de funcionar por algum motivo, um aplicativo não autorizado não poderá interceptar a conexão.PermitRootLogin
não permite o login root direto.AllowUsers jim
permite que o usuáriojim
faça login através de SSH. Se você não precisar fazer login de qualquer lugar, poderá tornar isso mais seguro restringindo o jim a um endereço IP (substitua 1.2.3.4 pelo seu endereço IP real):As alterações no arquivo de configuração
/etc/ssh/sshd_config
não são aplicadas imediatamente, para recarregar a configuração, execute:Haverá pistas sobre
/var/log/auth.log
por que o SSH (ou PAM) está rejeitando a tentativa de login. Pistas adicionais podem ser encontradas usando a-v
opção com o cliente ssh . Várias situações comuns, algumas mencionadas nas outras respostas:man passwd
, tente redefinir a senha ou verificar o conteúdo de/etc/shadow
)./etc/ssh/sshd_config
está configurado para desabilitar o login (DenyUsers
,AllowUsers
,PasswordAuthentication
,PubkeyAuthentication
,UsePAM
etc, vejaman sshd_config
)./etc/shells
./etc/ssh
,/home/jim/.ssh
,/home/jim/.ssh/*
, etc.Eu também recomendo usar adduser (em vez de useradd ) para adicionar novos usuários; é um pouco mais amigável sobre várias configurações de conta padrão.
Contanto que o usuário não faça parte do
admin
grupo, ele não poderá sudo para fazer o root. Para que eles usem su , você precisará definir uma senha de root (passwd root
), após o que eu recomendo configurarPermitRootLogin=no
em/etc/ssh/sshd_config
.Posso estar errado, mas sempre tenho que instalar o daemon do servidor antes de poder conectar (pelo menos na área de trabalho) o ssh é instalado por padrão, mas é apenas o cliente
este comando instala o servidor
sudo apt-get install openssh-server
Você pode alterar a porta e parar o login root editando
/etc/ssh/sshd_config
Isso requer que você reinicie o serviço.
sudo service ssh restart
Jim não terá acesso SSH até que você defina uma senha. Como root execute:
Se este comando retornar um "!" personagem então o login está desabilitado para esta conta. A execução
passwd jim
como root solicitará uma string de senha nova e confirmada, após a qual o comando grep acima deve retornar uma string com hash representando a senha para jim.Certifique-se também de verificar se o jim tem um shell de login, definido por padrão, e um diretório inicial que existe.
Observe a postagem de lekensteyn para obter informações sobre como modificar as configurações do servidor SSH.
No meu caso eu tinha um grupo que tinha permissão de acesso e o usuário não fazia parte dele. Isso resolveu para mim.
Usando o exemplo acima com o usuário
jim
e assuma o membro do grupojim
como único grupo (emita ogroups
comando enquanto estiver logadojim
para encontrar grupos dos quais você faz parte). No meu/etc/ssh/sshd_config
arquivo eu tinhaAllowGroups sshusers
entrada e, portanto, precisava adicionarjim
aosshusers
grupo. Abaixo está como isso seria feito:Substitua seu grupo e usuário conforme apropriado para sua configuração.
Pode haver algumas instâncias em que o
PasswordAuthentication
está desabilitado por padrão.Por favor, verifique
/etc/ssh/sshd_config
e certifique-se de que oPasswordAuthentication
atributo está definido comoyes
.@Lekensteyn Não consigo deixar um comentário na resposta da pergunta porque não tenho a reputação - mas tentei anexar
para o meu arquivo /etc/ssh/sshd_config e agora não consigo mais ssh com o meu existingUser ou o newUser.
Nota simples:
A chave pública deve ser escrita dentro deste arquivo: