Vraag Maak een nieuwe SSH-gebruiker op Ubuntu Server


Ik heb zojuist een nieuwe virtuele Ubuntu-server gemaakt en ben bezig het te verharden voor productiegebruik. Ik heb momenteel een root-account. Ik wil het volgende doen:

  • Maak een nieuwe gebruiker (laten we ze bellen) jim voor de rest van dit). Ik wil dat ze een hebben /home/ directory.
  • Geven jim SSH-toegang.
  • Toestaan jim naar su rooten maar niet uitvoeren sudo activiteiten.
  • Schakel root SSH-toegang uit.
  • Verplaats SSHd naar een niet-standaard poort om brute-aanvallen te stoppen.

Mijn probleem ligt bij de eerste twee items. Ik heb het al gevonden useradd maar om een ​​of andere reden kan ik me niet aanmelden als een gebruiker die ermee is aangemaakt via SSH. Moet ik SSHd verslaan om dit toe te staan?


82
2017-12-08 16:01


oorsprong


Hoi! Ik kan u helpen op servers, ik weet niet wat uw probleem met SSH is, want voor mij met standaardconfiguratie weigert mijn verbinding nooit. Misschien zie je het wel man 5 nologin, dit schrijft, dat als / etc / nologin bestaat, je alleen met root kunt inloggen. Probeer normaal in te loggen en schrijf de resultaten. - antivirtel
Wat is de shell van de gebruiker? Is het / bin / bash? Controleer dat in / etc / password. Controleer of het niet / dev / null of / bin / false is. - LFC_fan
Ja, LFC_fan, of / etc / nologin ook. Gebruik (sudo) cat / etc / passwd | grep Jim - antivirtel
@B. Roland, ik heb wel een /etc/nologin bestand, maar het is leeg. Ik heb het verwijderd en ssh herstart, maar het reageert nog steeds gewoon Permission denied, please try again. wanneer ik probeer in te loggen. - Oli♦
@LFC_fan het is / bin / bash - Oli♦


antwoorden:


Bewerken (als root) /etc/ssh/sshd_config. Voeg het volgende eraan toe:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234 zorgt ervoor dat SSH naar poort 1234 luistert. U kunt elke ongebruikte poort gebruiken van 1 tot 65535. Het wordt aanbevolen om een ​​geprivilegieerde poort (poort 1-1024) te kiezen die alleen door root kan worden gebruikt. Als uw SSH-daemon om de een of andere reden stopt met werken, kan een frauduleuze toepassing de verbinding niet onderscheppen.

PermitRootLogin verbiedt directe root login.

AllowUsers jim staat gebruiker toe jim om in te loggen via SSH. Als u niet overal moet inloggen, kunt u dit veiliger maken door jim te beperken tot een IP-adres (vervang 1.2.3.4 door uw huidige IP-adres):

AllowUsers jim@1.2.3.4

Wijzigingen in het configuratiebestand /etc/ssh/sshd_config worden niet onmiddellijk toegepast, om de configuratie opnieuw te laden, voer:

sudo service ssh reload

83
2017-12-08 17:57



+1: Opmerking: deze instructies zijn nog steeds van toepassing op nieuwere versies van Ubuntu (bijvoorbeeld 13.04). Als je dat wilt root login, echter (u bent nog steeds bezig met het instellen van de server), moet u instellen PermitRootLogin naar yes en voeg ook toe root naar AllowUsers. - JRG-Developer
wat is het wachtwoord voor deze gebruiker? - Wolfpack'08
Mijn VPS wordt geleverd met een rootwachtwoord voor aanmelden via SSH op poort 22. Het toevoegen van het antwoord aan sshd_config resulteert in root die niet kan inloggen. Is dit omdat ik ook poort 22 heb gebruikt voor jim, of is er een andere reden? - Wolfpack'08
@Lekensteyn Ik heb gemerkt dat het toevoegen van een nieuwe gebruiker aan Ubuntu zelf een ssh-account voor die gebruiker creëert .... useradd -m -G sudo,adm -s /bin/bash mecharok en passwd mecharok - Wolfpack'08
@ Wolfpack'08 Gebruik AllowUsers username1,username2 om SSH-aanmeldingen voor die gebruikers te beperken. Verzekeren dat sshd wordt opnieuw geladen. Als dit niet helpt, maak dan een nieuwe vraag. - Lekensteyn


SSH is erg kieskeurig over de directory- en bestandsrechten. Zeker weten dat:

  1. De map /home/gebruikersnaam/.ssh heeft de machtiging "700" en is eigendom van de gebruiker (niet de root!)
  2. De /home / username / ssh / authorized_keys heeft permissie "600" en is eigendom van de gebruiker

Kopieer uw openbare sleutel naar het bestand authorized_keys.

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

Er bestaat NEE moet de gebruiker toevoegen aan / etc / ssh / ssh_config.


65
2018-03-01 17:32



Mijn probleem was chown, ik maakte het ~./ssh als root en gaf de gebruiker nooit het eigendom. - Gerve
Mijn probleem was dat ik probeerde te gebruiken /root/.ssh/authorized_keysin plaats van /home/bob/.ssh/authorized_keys. - Alex W
Ik kan bevestigen: op onze VPS-hosting was het niet nodig om te bewerken ssh_config. Het instellen van die map en bestand was voldoende. - superjos
Dit is het juiste antwoord en is schaalbaar! - Viet
Voor mij moest het chmod 755 /home/gebruikersnaam /.ssh zijn anders zou het niet werken. - Jim W


Er zullen aanwijzingen zijn in /var/log/auth.log voor waarom SSH (of PAM) de inlogpoging afkeurt. Aanvullende aanwijzingen kunnen worden gevonden met behulp van de -v optie met de ssh cliënt. Verschillende veel voorkomende situaties, waarvan sommige in de andere antwoorden worden genoemd:

  • het gebruikersaccount mist een wachtwoord of is anderszins uitgeschakeld (zie man passwd, probeer het wachtwoord opnieuw in te stellen of controleer de inhoud van /etc/shadow).
  • /etc/ssh/sshd_config is geconfigureerd om het inloggen te weigeren (DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAM enz., zie man sshd_config).
  • de shell van de gebruiker wordt niet vermeld in /etc/shells.
  • verschillende toestemmingsproblemen op mappen of bestanden gerelateerd aan SSH-werking: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, enz.

Ik zou ook aanraden om te gebruiken Voeg gebruiker toe (in plaats van useradd) voor het toevoegen van nieuwe gebruikers; het is een beetje vriendelijker over verschillende standaard accountinstellingen.

Zolang de gebruiker geen deel uitmaakt van de admin groep, zullen ze niet kunnen sudo wortel schieten. Voor hen om te gebruiken su, je moet een root-wachtwoord instellen (passwd root), waarna ik het instellen aanbeveel PermitRootLogin=no in /etc/ssh/sshd_config.


10
2017-12-11 07:15



Heel erg bedankt voor het goede antwoord - speciaal "adduser" heeft veel geholpen! - vishal.biyani


Ik zou het mis hebben, maar ik moet altijd de server-daemon installeren voordat ik verbinding kan maken (in elk geval op een desktop) SSH wordt standaard geïnstalleerd, maar dat is alleen de client

deze opdracht installeert de server

sudo apt-get install openssh-server

U kunt de poort wijzigen en de root-aanmelding stoppen door deze te bewerken

/etc/ssh/sshd_config

Dit vereist echter dat u de service opnieuw start.

sudo service ssh restart


10
2017-12-08 16:48



Dit is een virtuele server (VPS) dus SSH is standaard geïnstalleerd. Het is mijn enige interface met de server. En u kunt de configuratie opnieuw laden via sudo /etc/init.d/ssh reload in plaats daarvan, maar toch goede informatie. - Oli♦


Jim heeft geen SSH-toegang totdat je een wachtwoord hebt ingesteld. Als root wordt uitgevoerd:

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

Als dit commando een "!" teken dan inloggen is uitgeschakeld voor dit account. uitvoeren passwd jim als root je zal vragen om een ​​nieuwe en bevestigde wachtwoordstring waarna de bovenstaande grep-opdracht een gehashte string moet retourneren die het wachtwoord voor jim vertegenwoordigt.

Controleer ook of jim een ​​login-shell heeft, die standaard is ingesteld en een homedirectory die bestaat.

Let op het bericht van lekensteyn voor informatie over het aanpassen van de SSH-serverinstellingen.


7
2017-12-08 18:24



"Als deze opdracht een"! "-Teken retourneert, is aanmelden voor dit account uitgeschakeld" Let op dit betekent niet dat u geen SSH kunt; alleen dat je het niet kunt doen met een wachtwoord (versus met je publieke sleutel). - bfontaine


In mijn geval had ik een groep die toegang kreeg en de gebruiker maakte er geen deel van uit. Dit loste het voor mij op.

Gebruik het bovenstaande voorbeeld met de gebruiker jim en neem een ​​lid van de groep aan jim omdat het alleen maar een groep is (kwestie groups opdracht terwijl u bent ingelogd als jim om groepen te vinden waarvan je deel uitmaakt). In mijn /etc/ssh/sshd_config bestand dat ik had AllowGroups sshusers toegang en dus nodig om toe te voegen jim naar de sshusers groep. Hieronder is hoe dit zou worden bereikt:

usermod -a -G sshusers jim

Vervang uw groep en gebruiker zoals geschikt voor uw configuratie.


2
2018-02-13 00:22



je zou je antwoord moeten verbeteren door te refereren aan een bron die je voorbeeld beter uitlegt of door relevante informatie toe te voegen op basis van je voorbeeld op de oorspronkelijke vraag van OP. bijvoorbeeld de opgegeven gebruiker jim als een dummy-gebruiker om context te helpen bieden. het artikel hier legt het goed uit. - jargonjunkie


Er kunnen enkele gevallen zijn dat de PasswordAuthentication is standaard uitgeschakeld.

Controleer alstublieft /etc/ssh/sshd_config en zorg ervoor dat de PasswordAuthentication attribuut is ingesteld op yes.


0
2017-08-24 15:05