Crie um novo usuário SSH no Ubuntu Server

104

Acabei de criar um novo servidor virtual Ubuntu 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 jimpelo resto disso). Eu quero que eles tenham um /home/diretório.
  • Conceda jimacesso SSH.
  • Permitir jimque o usuário faça suroot, mas não execute sudooperações.
  • Desative o acesso SSH raiz.
  • Mova o SSHd para uma porta não padrão para ajudar a interromper ataques brutos.

Meu problema está nos dois primeiros itens. Eu já encontrei, useraddmas por algum motivo, não consigo fazer login como um usuário criado com ele pelo SSH. Preciso vencer o SSHd para permitir isso?

Oli
fonte
Oi! Posso ajudá-lo em servidores, não sei qual é o seu problema com o SSH, porque para mim com a configuração padrão nunca recusa minha conexão. Você pode ver man 5 nologin , escreve isso, que se o / etc / nologin existir, você poderá efetuar login apenas com root. Tente fazer o login normalmente e depois escreva os resultados.
Antivirtel
Qual é o shell do usuário? É / bin / bash? Verifique isso em / etc / password. Verifique se não é / dev / null ou / bin / false.
LFC_fan
Sim LFC_fan ou / etc / nologin também. Use (sudo) cat / etc / passwd | grep jim
antivirtel 08/12/10
1
@B. Roland Eu tenho um /etc/nologinarquivo, mas está vazio. Eu o apaguei e reiniciei o ssh, mas ele ainda está respondendo Permission denied, please try again.quando tento fazer login.
Oli
@LFC_fan é / bin / bash
Oli

Respostas:

99

Edite (como root) /etc/ssh/sshd_config. Acrescente o seguinte:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234faz com que o SSH escute na porta 1234. Você pode usar qualquer porta não utilizada de 1 a 65535. É recomendável escolher uma porta privilegiada (porta 1-1024) que pode ser usada apenas pela raiz. Se o 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 raiz direto.

AllowUsers jimpermite que o usuário jimefetue login através do SSH. Se você não precisar fazer login de qualquer lugar, poderá torná-lo mais seguro restringindo jim a um endereço IP (substitua 1.2.3.4 pelo seu endereço IP real):

AllowUsers [email protected]

As alterações no arquivo de configuração /etc/ssh/sshd_confignão são aplicadas imediatamente. Para recarregar a configuração, execute:

sudo service ssh reload
Lekensteyn
fonte
10
+1: Nota: estas instruções ainda são aplicáveis ​​às versões mais recentes do Ubuntu (por exemplo, 13.04). Se você deseja fazer rootlogin, no entanto, (talvez você ainda está configurando o servidor), você deve definir PermitRootLogina yese também adicionar roota AllowUsers.
JRG-Developer
4
qual é a senha deste usuário?
usar o seguinte código
Meu VPS vem com uma senha de root para o login SSH na porta 22. Anexar a resposta ao sshd_config faz com que o root não consiga efetuar login. Isso ocorre porque eu também usei a porta 22 para jim ou há algum outro motivo?
precisa
1
@Lekensteyn eu encontrei que apenas adicionar um novo usuário ao próprio Ubuntu cria uma conta ssh para esse usuário ... useradd -m -G sudo,adm -s /bin/bash mecharokepasswd mecharok
Wolfpack'08
3
@ Wolfpack'08 Use AllowUsers username1,username2para restringir logins SSH a esses usuários. Verifique se sshdestá recarregado. Se isso não ajudar, crie uma nova pergunta.
Lekensteyn 30/01
97

O SSH é muito exigente quanto às permissões de diretório e arquivo. Certifique-se de que:

  1. O diretório /home/username/.ssh tem permissão "700" e pertence ao usuário (não root!)
  2. O / home / nome de usuário / ssh / allowed_keys tem permissão "600" e é de propriedade do usuário

Copie sua chave pública no arquivo allowed_keys.

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

NO necessidade de adicionar o usuário a / etc / ssh / ssh_config.

dh1tw
fonte
2
Meu problema era chown, criei ~./sshcomo root e nunca dei propriedade ao usuário.
Gerve
1
Meu problema era que eu estava tentando usar em /root/.ssh/authorized_keysvez de /home/bob/.ssh/authorized_keys.
28715 Alex W
Posso confirmar: em nossa hospedagem VPS, não havia necessidade de editar ssh_config. Configurar esse diretório e arquivo foi suficiente.
Superjos 6/15
2
Para mim, tinha que ser chmod 755 /home/username/.ssh, caso contrário não funcionaria.
21716 Jim Jim
Muito mais fácil fazer login como usuário (ou sudo su --login {user}) e executar ssh-keygen-> A pasta ".ssh", a chave + cert e as permissões estão concluídas. Basta criar o author_keys conforme suas instruções.
bshea
13

Haverá pistas sobre /var/log/auth.logpor que o SSH (ou PAM) está rejeitando a tentativa de login. Pistas adicionais podem ser encontradas usando a -vopção com o cliente ssh . Várias situações comuns, algumas mencionadas nas outras respostas:

  • a conta do usuário não possui uma senha ou está desativada (consulte man passwd, tente redefinir a senha ou verificar o conteúdo de /etc/shadow).
  • /etc/ssh/sshd_configé configurada para impedir o início de sessão ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMetc, ver man sshd_config).
  • shell do usuário não estiver listado na /etc/shells.
  • vários problemas de permissão em diretórios ou arquivos relacionados a operação de SSH: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, etc.

Eu também recomendo o uso de adduser (em vez de useradd ) para adicionar novos usuários; é um pouco mais amigável sobre várias configurações de conta padrão.

Enquanto o usuário não fizer parte do admingrupo, ele não poderá fazer o sudo para fazer root. Para eles usarem su , você precisará definir uma senha de root ( passwd root), após o qual eu recomendo configuração PermitRootLogin=noem /etc/ssh/sshd_config.

Kees Cook
fonte
Muito obrigado pela ótima resposta - especialmente o "adduser" ajudou muito!
vishal.biyani
11

Posso estar errado, mas sempre tenho que instalar o daemon do servidor antes de conectar (pelo menos na área de trabalho) ssh é instalado por padrão, mas esse é apenas o cliente

este comando instala o servidor

sudo apt-get install openssh-server

Você pode alterar a porta e interromper o login root editando

/etc/ssh/sshd_config

Isso requer que você reinicie o serviço.

sudo service ssh restart

Matt Mootz
fonte
Como é um servidor virtual (VPS), o SSH é instalado por padrão. É minha única interface para o servidor. E você pode recarregar a configuração via sudo /etc/init.d/ssh reload, mas boas informações, no entanto.
Oli
8

Jim não terá acesso SSH até você definir uma senha. Como root execute:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

Se este comando retornar um "!" caractere, o login está desativado para esta conta. A execução passwd jimcomo root solicitará uma sequência de senha nova e confirmada, após a qual o comando grep acima deve retornar uma sequência de hash representando a senha para jim.

Verifique também se o jim possui um shell de login, definido por padrão, e um diretório inicial que exista.

Observe a publicação de lekensteyn para obter informações sobre como modificar as configurações do servidor SSH.

Tok
fonte
"Se este comando retornar um caractere"! ", O login será desativado para esta conta" Observe que isso não significa que você não pode fazer o SSH; apenas que você não pode fazer isso com uma senha (vs. com sua chave pública).
precisa saber é o seguinte
3

No meu caso, eu tinha um grupo que tinha acesso permitido e o usuário não fazia parte dele. Isso resolveu para mim.

Usando o exemplo acima com o usuário jime assuma o membro do grupo jimcomo único grupo (emita o groupscomando enquanto estiver conectado jimpara encontrar os grupos dos quais você faz parte). No meu /etc/ssh/sshd_configarquivo, eu tinha AllowGroups sshusersentrada e, portanto, precisava adicionar jimao sshusersgrupo. Abaixo está como isso seria realizado:

usermod -a -G sshusers jim

Substitua seu grupo e usuário conforme apropriado para sua configuração.

Joshua Fricke
fonte
1
você deve melhorar sua resposta consultando uma fonte que explique melhor o seu exemplo ou adicionando informações relevantes com base no seu exemplo na pergunta original do OP. por exemplo, o usuário especificado jimcomo usuário fictício para ajudar a fornecer contexto. o artigo aqui explica bem.
0

Pode haver algumas instâncias que PasswordAuthenticationestão desativadas por padrão.

Verifique /etc/ssh/sshd_confige verifique se o PasswordAuthenticationatributo está definido como yes.

Aldee
fonte
0

@Lekensteyn Não consigo deixar um comentário na resposta da pergunta porque não tenho reputação - mas tentei anexar

AllowUsers existingUser,newUser

no meu arquivo / etc / ssh / sshd_config e agora não posso mais ssh com o meu existenteUsuário ou o novoUsuário.

ptjetty
fonte
Entendo sua dor: o DI teve o mesmo problema uma vez. Solução: AllowUsers existingUser@* newUser@*
İsmail Atkurt