Crie um novo usuário SSH no Ubuntu Server

77

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 de jim para o restante disso). Eu quero que eles tenham um diretório /home/ .
  • Conceda acesso jim SSH.
  • Permita que jim to su raiz, mas não execute sudo operações.
  • Desativar o acesso SSH raiz.
  • Mova o SSHd para uma porta não padrão para ajudar a impedir ataques brutos.

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

    
por Oli 08.12.2010 / 17:01

7 respostas

80

Edite (como root) /etc/ssh/sshd_config . Anexe o seguinte a ele:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234 faz com que o SSH escute na porta 1234. Você pode usar qualquer porta não utilizada de 1 a 65535. É recomendado escolher uma porta privilegiada (porta 1-1024) que só pode ser usada pelo root. 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 direto na raiz.

AllowUsers jim permite que o usuário jim faça login por meio do SSH. Se você não precisa fazer login de qualquer lugar, pode tornar isso mais seguro restringindo jim a um endereço IP (substitua 1.2.3.4 pelo seu endereço IP real):

AllowUsers [email protected]

Alterações no arquivo de configuração /etc/ssh/sshd_config não são aplicadas imediatamente, para recarregar a configuração, execute:

sudo service ssh reload
    
por Lekensteyn 08.12.2010 / 18:57
56

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 é de propriedade do usuário (não é root!)
  2. O / home / username / ssh / authorized_keys tem permissão "600" e é de propriedade do usuário

Copie sua chave pública no arquivo authorized_keys.

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

NÃO precisa adicionar o usuário a / etc / ssh / ssh_config.

    
por user2292376 01.03.2014 / 18:32
10

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

  • a conta de 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 está configurado para não permitir o login ( DenyUsers , AllowUsers , PasswordAuthentication , PubkeyAuthentication , UsePAM etc, consulte man sshd_config ).
  • o shell do usuário não está listado em /etc/shells .
  • vários problemas de permissão em diretórios ou arquivos relacionados à operação do SSH: /etc/ssh , /home/jim/.ssh , /home/jim/.ssh/* , etc.

Eu também recomendaria 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 grupo admin , eles não poderão sudo fazer root. Para eles usarem su , você precisará definir uma senha de root ( passwd root ), após o qual eu recomendo definir PermitRootLogin=no em /etc/ssh/sshd_config .

    
por Kees Cook 11.12.2010 / 08:15
10

Eu 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 isso é apenas o cliente

este comando instala o servidor

sudo apt-get install openssh-server

Você pode alterar a porta e parar o login raiz editando

/etc/ssh/sshd_config

Isso requer que você reinicie o serviço.

sudo service ssh restart

    
por Matt Mootz 08.12.2010 / 17:48
6

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

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

Se este comando retornar um "!" caractere, em seguida, o login é desativado para esta conta. Executar passwd jim como root solicitará uma nova e confirmada seqüência de senha, após a qual o comando grep acima deve retornar uma string com hash representando a senha de jim.

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

Por favor, note post do lekensteyn para obter informações sobre como modificar as configurações do servidor SSH.

    
O
por Tok 08.12.2010 / 19:24
1

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 assumam o membro do grupo jim , pois é apenas um grupo (comando groups do problema enquanto logado como jim para encontrar grupos dos quais você faz parte). No meu arquivo /etc/ssh/sshd_config , eu tinha AllowGroups sshusers entry e, portanto, precisava adicionar jim ao grupo sshusers . Abaixo está como isso seria realizado:

usermod -a -G sshusers jim

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

    
por Joshua Fricke 13.02.2018 / 01:22
0

Pode haver algumas instâncias em que o PasswordAuthentication está desativado por padrão.

Por favor, verifique /etc/ssh/sshd_config e assegure-se de que o atributo PasswordAuthentication esteja definido como yes .

    
por Aldee 24.08.2017 / 17:05