Crea un nuovo utente SSH su Ubuntu Server

81

Ho appena creato un nuovo server Ubuntu virtuale e sono in procinto di rafforzarlo per l'utilizzo in produzione. Al momento ho un account di root. Voglio fare quanto segue:

  • Crea un nuovo utente (chiamiamoli jim per il resto di questo). Voglio che abbiano una directory /home/ .
  • Fornisci jim accesso SSH.
  • Consenti jim a su su root ma non esegui sudo operazioni.
  • Disattiva l'accesso SSH di root.
  • Sposta SSHd su una porta non standard per bloccare gli attacchi brutali.

Il mio problema si trova con i primi due elementi. Ho già trovato useradd ma per qualche ragione, non posso accedere come utente creato con esso su SSH. Devo battere SSHd per consentire questo?

    
posta Oli 08.12.2010 - 17:01

7 risposte

83

Modifica (come root) /etc/ssh/sshd_config . Aggiungi il seguente:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234 fa sì che SSH ascolti sulla porta 1234. È possibile utilizzare qualsiasi porta non utilizzata da 1 a 65535. Si consiglia di scegliere una porta privilegiata (porta 1-1024) che può essere utilizzata solo da root. Se il tuo demone SSH smette di funzionare per qualche motivo, un'applicazione rogue non può intercettare la connessione.

PermitRootLogin non consente l'accesso diretto alla directory principale.

AllowUsers jim consente all'utente jim di accedere tramite SSH. Se non è necessario effettuare il login da qualsiasi luogo, è possibile renderlo più sicuro limitando jim a un indirizzo IP (sostituire 1.2.3.4 con il proprio indirizzo IP reale):

AllowUsers [email protected]

Le modifiche al file di configurazione /etc/ssh/sshd_config non vengono applicate immediatamente, per ricaricare la configurazione, eseguire:

sudo service ssh reload
    
risposta data Lekensteyn 08.12.2010 - 18:57
61

SSH è molto schizzinoso sulla directory e sui permessi dei file. Assicurati che:

  1. La directory /home/username/.ssh ha il permesso "700" ed è di proprietà dell'utente (non di root!)
  2. Il / home / nomeutente / ssh / authorized_keys ha l'autorizzazione "600" ed è di proprietà dell'utente

Copia la tua chiave pubblica nel file authorized_keys.

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

C'è NO necessario aggiungere l'utente a / etc / ssh / ssh_config.

    
risposta data dh1tw 01.03.2014 - 18:32
10

Ci saranno indizi in /var/log/auth.log sul motivo per cui SSH (o PAM) sta rifiutando il tentativo di accesso. Ulteriori indizi possono essere trovati usando l'opzione -v con il client ssh . Diverse situazioni comuni, alcune citate nelle altre risposte:

  • l'account utente non ha una password o è disabilitato (vedi man passwd , prova a reimpostare la password o controllare il contenuto di /etc/shadow ).
  • /etc/ssh/sshd_config è configurato per disabilitare l'accesso ( DenyUsers , AllowUsers , PasswordAuthentication , PubkeyAuthentication , UsePAM ecc., vedi man sshd_config ).
  • la shell dell'utente non è elencata in /etc/shells .
  • vari problemi di autorizzazione su directory o file relativi all'operazione SSH: /etc/ssh , /home/jim/.ssh , /home/jim/.ssh/* , ecc.

Raccomando anche di usare adduser (invece di useradd ) per aggiungere nuovi utenti; è un po 'più amichevole su varie impostazioni dell'account predefinito.

Finché l'utente non fa parte del gruppo admin , non sarà in grado di sudo per il root. Perché utilizzino su , dovrai impostare una password di root ( passwd root ), dopodiché ti suggerisco di impostare PermitRootLogin=no in /etc/ssh/sshd_config .

    
risposta data Kees Cook 11.12.2010 - 08:15
10

Potrei sbagliarmi, ma devo sempre installare il demone del server prima che possa connettermi (Almeno sul desktop) ssh è installato di default ma questo è solo il client

questo comando installa il server

sudo apt-get install openssh-server

Puoi modificare la porta e interrompere il login di root modificando

/etc/ssh/sshd_config

Ciò richiede però il riavvio del servizio.

sudo service ssh restart

    
risposta data Matt Mootz 08.12.2010 - 17:48
7

Jim non avrà accesso SSH finché non avrai impostato una password. Esegui come root:

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

Se questo comando restituisce un "!" carattere, quindi il login è disabilitato per questo account. Eseguendo passwd jim come root ti verrà richiesta una nuova stringa di password confermata, dopo di che il comando grep sopra dovrebbe restituire una stringa hash che rappresenta la password per jim.

Verifica inoltre che jim abbia una shell di login, impostata per impostazione predefinita e una home directory esistente.

Nota il post di lekensteyn per informazioni sulla modifica delle impostazioni del server SSH.

    
risposta data Tok 08.12.2010 - 19:24
2

Nel mio caso avevo un gruppo a cui era consentito l'accesso e l'utente non ne faceva parte. Questo l'ha risolto per me.

Utilizzando l'esempio precedente con l'utente jim e si assume il membro del gruppo jim come unico gruppo (comando groups mentre si è connessi come jim per trovare i gruppi di cui si fa parte). Nel mio file /etc/ssh/sshd_config avevo la voce AllowGroups sshusers e quindi avevo bisogno di aggiungere jim al gruppo sshusers . Di seguito è riportato come ciò avverrebbe:

usermod -a -G sshusers jim

Sostituisci il tuo gruppo e utente come appropriato per la tua configurazione.

    
risposta data Joshua Fricke 13.02.2018 - 01:22
0

Potrebbero esserci alcune istanze in cui PasswordAuthentication è disabilitato per impostazione predefinita.

Verifica con attenzione /etc/ssh/sshd_config e assicurati che l'attributo PasswordAuthentication sia impostato su yes .

    
risposta data Aldee 24.08.2017 - 17:05

Leggi altre domande sui tag