Crea un nuovo utente SSH su Ubuntu Server


104

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

  • Crea un nuovo utente (chiamiamoli jimper il resto). Voglio che abbiano una /home/directory.
  • Dare jimaccesso a SSH.
  • Consentire jima sufare il tifo, ma non esegue sudooperazioni.
  • Disattiva l'accesso SSH root.
  • Sposta SSHd su una porta non standard per fermare gli attacchi bruti.

Il mio problema risiede nei primi due elementi. Ho già trovato, useraddma per qualche motivo, non riesco ad accedere come utente creato con esso su SSH. Devo battere SSHd per consentire questo?


Ciao! Posso aiutarti nei server, non so quale sia il tuo problema con SSH, perché per me con la configurazione predefinita non rifiuto mai la mia connessione. Potresti vedere man 5 nologin , questo scrive, che se esiste / etc / nologin, puoi accedere solo con root. Prova ad accedere normalmente, quindi scrivi i risultati.
antivirtel,

Qual è la shell dell'utente? È / bin / bash? Dai un'occhiata in / etc / password. Assicurati che non sia / dev / null o / bin / false.
LFC_fan,

Sì LFC_fan o anche / etc / nologin. Usa (sudo) cat / etc / passwd | grep jim
antivirtel l'

1
@B. Roland Ho un /etc/nologinfile ma è vuoto. L'ho cancellato e riavviato ssh ma sta ancora rispondendo Permission denied, please try again.quando provo ad accedere.
Oli

@LFC_fan è / bin / bash
Oli

Risposte:


99

Modifica (come root) /etc/ssh/sshd_config. Aggiungi quanto segue:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234causa l'ascolto di SSH 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 demone SSH smette di funzionare per qualche motivo, un'applicazione non autorizzata non può intercettare la connessione.

PermitRootLogin non consente l'accesso diretto alla radice.

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

AllowUsers jim@1.2.3.4

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

sudo service ssh reload

10
+1: Nota: queste istruzioni sono ancora applicabili alle versioni più recenti di Ubuntu (ad es. 13.04). Se si desidera rootlogin, però, (forse si sta ancora la configurazione del server), è necessario impostare PermitRootLoginper yese anche aggiungere roota AllowUsers.
JRG-Developer

4
qual è la password per questo utente?
Wolfpack'08,

Il mio VPS viene fornito con una password di root per l'accesso SSH sulla porta 22. L'aggiunta della risposta a sshd_config comporta l'impossibilità di accedere alla radice. È perché ho usato anche la porta 22 per jim o c'è qualche altro motivo?
Wolfpack'08,

1
@Lekensteyn Ho scoperto che l'aggiunta di un nuovo utente a Ubuntu stesso crea un account ssh per quell'utente .... useradd -m -G sudo,adm -s /bin/bash mecharokepasswd mecharok
Wolfpack'08

3
@ Wolfpack'08 Utilizzare AllowUsers username1,username2per limitare gli accessi SSH a tali utenti. Assicurarsi che sshdsia ricaricato. Se questo non aiuta, crea una nuova domanda.
Lekensteyn,

97

SSH è molto esigente riguardo alla directory e ai permessi dei file. Assicurati che:

  1. La directory /home/username/.ssh ha l'autorizzazione "700" ed è di proprietà dell'utente (non root!)
  2. Il / home / username / ssh / authorized_keys ha il permesso "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 necessità di aggiungere l'utente a / etc / ssh / ssh_config.


2
Il mio problema era chown, l'ho creato ~./sshcome root e non ho mai dato la proprietà all'utente.
Gerve

1
Il mio problema era che stavo cercando di usare al /root/.ssh/authorized_keysposto di /home/bob/.ssh/authorized_keys.
Alex W,

Posso confermare: sul nostro hosting VPS non è stato necessario modificarlo ssh_config. L'impostazione di tale directory e file è stata sufficiente.
Superjos,

2
Per me doveva essere chmod 755 /home/username/.ssh altrimenti non avrebbe funzionato.
Jim W,

Molto più facile accedere come utente (o sudo su --login {user}) ed eseguire ssh-keygen-> La cartella ".ssh", key + cert e le autorizzazioni sono completate. Basta creare authorized_keys secondo le tue istruzioni.
bshea,

13

Ci saranno indizi sul /var/log/auth.logperché SSH (o PAM) stia rifiutando il tentativo di accesso. Ulteriori indizi possono essere trovati usando l' -vopzione con il client ssh . Diverse situazioni comuni, alcune citate nelle altre risposte:

  • l'account utente è privo di password o è diversamente disabilitato (vedere man passwd, provare a reimpostare la password o controllare il contenuto di /etc/shadow).
  • /etc/ssh/sshd_configè configurato per non consentire l'accesso ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMecc, vedi man sshd_config).
  • la shell dell'utente non è elencata in /etc/shells.
  • vari problemi di permessi sulle directory o file relativi al funzionamento SSH: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, etc.

Consiglierei anche di usare adduser (invece di useradd ) per aggiungere nuovi utenti; è un po 'più amichevole riguardo alle varie impostazioni predefinite dell'account.

Finché l'utente non fa parte del admingruppo, non sarà in grado di eseguire il sudo su root. Per loro di utilizzare su , è necessario impostare una password di root ( passwd root), dopo di che vi consiglio impostazione PermitRootLogin=noin /etc/ssh/sshd_config.


Grazie mille per l'ottima risposta, specialmente "adduser" mi ha aiutato molto!
vishal.biyani,

11

Potrei sbagliarmi, ma devo sempre installare il demone del server prima di poter connettere (almeno sul desktop) ssh è installato di default ma questo è solo il client

questo comando installa il server

sudo apt-get install openssh-server

È possibile modificare la porta e interrompere l'accesso root modificando

/etc/ssh/sshd_config

Ciò richiede tuttavia il riavvio del servizio.

sudo service ssh restart


Questo è un server virtuale (VPS), quindi SSH è installato per impostazione predefinita. È la mia unica interfaccia per il server. E puoi invece ricaricare la configurazione tramite sudo /etc/init.d/ssh reload, ma comunque buone informazioni.
Oli

8

Jim non avrà accesso a SSH fino a quando non avrai impostato una password. Come root esegui:

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

Se questo comando restituisce un "!" carattere quindi il login è disabilitato per questo account. L'esecuzione passwd jimcome root richiederà una stringa di password nuova e confermata, dopo la quale il comando grep sopra dovrebbe restituire una stringa con hash che rappresenta la password per jim.

Assicurati anche di verificare che jim abbia una shell di accesso, impostata di default e una home directory che esiste.

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


"Se questo comando restituisce un carattere"! ", Il login è disabilitato per questo account" Nota che questo non significa che non puoi SSH; solo che non puoi farlo con una password (anziché con la tua chiave pubblica).
bfontaine,

3

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

Usando l'esempio sopra con l'utente jime assumendo il membro del gruppo jimcome unico gruppo (emettere il groupscomando durante l'accesso jimper trovare i gruppi di cui si fa parte). Nel mio /etc/ssh/sshd_configfile avevo AllowGroups sshusersvoce e quindi avevo bisogno di aggiungere jimal sshusersgruppo. Di seguito è riportato come questo sarebbe realizzato:

usermod -a -G sshusers jim

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


1
dovresti migliorare la tua risposta facendo riferimento a una fonte che spieghi meglio il tuo esempio o aggiungendo informazioni pertinenti basando il tuo esempio sulla domanda originale del PO. ad esempio, l'utente specificato jimcome utente fittizio per fornire un contesto. l'articolo qui lo spiega bene.

0

In alcuni casi potrebbe essere PasswordAuthenticationdisabilitato per impostazione predefinita.

Si prega di verificare /etc/ssh/sshd_confige assicurarsi che l' PasswordAuthenticationattributo sia impostato su yes.


0

@Lekensteyn Non riesco a lasciare un commento alla risposta alla domanda perché non ho la reputazione, ma ho provato ad aggiungere

AllowUsers existingUser,newUser

nel mio file / etc / ssh / sshd_config e ora non posso più ssh con il mio utente esistente o il nuovo utente.


Capisco il tuo dolore: DI ha avuto lo stesso problema una volta. Soluzione: AllowUsers existingUser@* newUser@*
İsmail Atkurt il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.