Utwórz nowego użytkownika SSH na Ubuntu Server

104

Właśnie stworzyłem nowy wirtualny serwer Ubuntu i jestem w trakcie jego utwardzania do użytku produkcyjnego. Obecnie mam konto root. Chcę wykonać następujące czynności:

  • Utwórz nowego użytkownika (zadzwońmy jimprzez resztę tego). Chcę, żeby mieli /home/katalog.
  • Daj jimdostęp do SSH.
  • Pozwól jimna surootowanie, ale nie wykonywanie sudooperacji.
  • Wyłącz dostęp root SSH.
  • Przenieś SSHd do niestandardowego portu, aby powstrzymać brutalne ataki.

Mój problem dotyczy dwóch pierwszych elementów. Znalazłem już, useraddale z jakiegoś powodu nie mogę się zalogować jako użytkownik utworzony przy użyciu SSH. Czy muszę pokonać SSHd, aby na to pozwolić?

Oli
źródło
Cześć! Mogę ci pomóc na serwerach, nie wiem jaki jest twój problem z SSH, ponieważ dla mnie z domyślną konfiguracją nigdy nie odrzuca mojego połączenia. Możesz zobaczyć man 5 nologin , to pisze, że jeśli istnieje / etc / nologin, możesz zalogować się tylko przy użyciu roota. Spróbuj zalogować się normalnie, a następnie zapisz wyniki.
antivirtel,
Jaka jest powłoka użytkownika? Czy to / bin / bash? Sprawdź to w / etc / password. Upewnij się, że nie jest to / dev / null lub / bin / false.
LFC_fan
Tak LFC_fan lub / etc / nologin. Użyj (sudo) cat / etc / passwd | grep jim
antivirtel
1
@B. Roland Mam /etc/nologinplik, ale jest pusty. Usunąłem go i ponownie uruchomiłem ssh, ale nadal reaguje, Permission denied, please try again.gdy próbuję się zalogować.
Oli
@LFC_fan it / bin / bash
Oli

Odpowiedzi:

99

Edytuj (jako root) /etc/ssh/sshd_config. Dołącz do niego następujące elementy:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234powoduje, że SSH nasłuchuje na porcie 1234. Możesz użyć dowolnego nieużywanego portu od 1 do 65535. Zalecane jest wybranie uprzywilejowanego portu (port 1-1024), z którego może korzystać tylko root. Jeśli z jakiegoś powodu twój demon SSH przestanie działać, nieuczciwa aplikacja nie może przechwycić połączenia.

PermitRootLogin nie zezwala na bezpośrednie logowanie do roota.

AllowUsers jimpozwala użytkownikowi jimzalogować się przez SSH. Jeśli nie musisz logować się zewsząd, możesz zwiększyć bezpieczeństwo, ograniczając jim do adresu IP (zamień 1.2.3.4 na rzeczywisty adres IP):

AllowUsers [email protected]

Zmiany w pliku konfiguracyjnym /etc/ssh/sshd_confignie są natychmiast stosowane, aby ponownie załadować konfigurację, uruchom:

sudo service ssh reload
Lekensteyn
źródło
10
+1: Uwaga: instrukcje te nadal dotyczą nowszych wersji Ubuntu (np. 13.04). Jeśli jednak chcesz się rootzalogować (być może nadal konfigurujesz serwer), musisz ustawić PermitRootLoginopcję, yesa także dodać rootdo AllowUsers.
JRG-Developer
4
jakie jest hasło dla tego użytkownika?
Wolfpack'08
Moje VPS zawiera hasło roota do logowania SSH na porcie 22. Dołączenie odpowiedzi do sshd_config powoduje, że root nie może się zalogować. Czy to dlatego, że użyłem również portu 22 dla jima, czy jest jakiś inny powód?
Wolfpack'08
1
@Lekensteyn Właśnie dodałem, że dodanie nowego użytkownika do samego Ubuntu tworzy konto ssh dla tego użytkownika .... useradd -m -G sudo,adm -s /bin/bash mecharokipasswd mecharok
Wolfpack'08
3
@ Wolfpack'08 Użyj, AllowUsers username1,username2aby ograniczyć logowanie SSH do tych użytkowników. Upewnij się, że sshdzostał ponownie załadowany. Jeśli to nie pomoże, utwórz nowe pytanie.
Lekensteyn
96

SSH jest bardzo wybredny, jeśli chodzi o uprawnienia do katalogu i plików. Upewnić się, że:

  1. Katalog /home/username/.ssh ma uprawnienie „700” i jest własnością użytkownika (nie root!)
  2. / Home / nazwa użytkownika / ssh / autoryzowane_klucze ma uprawnienie „600” i jest własnością użytkownika

Skopiuj swój klucz publiczny do pliku autoryzowanych_kluczy.

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

Istnieje NIE trzeba dodać użytkownika do / etc / ssh / ssh_config.

dh1tw
źródło
1
Mój problem został rozwiązany, utworzyłem ~./sshjako root i nigdy nie przekazałem własności użytkownika.
Gerve,
1
Mój problem polegał na tym, że próbowałem użyć /root/.ssh/authorized_keyszamiast /home/bob/.ssh/authorized_keys.
Alex W
Mogę potwierdzić: na naszym hostingu VPS nie było potrzeby edycji ssh_config. Wystarczyło skonfigurować ten katalog i plik.
superjos
2
Dla mnie musiał to być chmod 755 /home/username/.ssh, inaczej nie działałoby.
Jim W
Znacznie łatwiej zalogować się jako użytkownik (lub sudo su --login {user}) i uruchomić ssh-keygen-> Folder „.ssh”, klucz + certyfikat i uprawnienia zostały zakończone. Po prostu utwórz klucze autoryzowane zgodnie z instrukcjami.
bshea,
13

Pojawią się wskazówki, /var/log/auth.logdlaczego SSH (lub PAM) odrzuca próbę logowania. Dodatkowe wskazówki można znaleźć, używając -vopcji z klientem ssh . Kilka typowych sytuacji, niektóre wymienione w innych odpowiedziach:

  • konto użytkownika nie ma hasła lub jest w inny sposób wyłączone (patrz man passwd, spróbuj zresetować hasło lub sprawdzić zawartość /etc/shadow).
  • /etc/ssh/sshd_configjest skonfigurowany tak, aby uniemożliwić login ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMetc, patrz man sshd_config).
  • powłoka użytkownika nie jest wymieniona w /etc/shells.
  • różne problemy uprawnienia na katalogi lub pliki związane z funkcjonowaniem SSH: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, etc.

Polecam także użycie adduser (zamiast useradd ) do dodawania nowych użytkowników; jest nieco bardziej przyjazny dla różnych domyślnych ustawień konta.

Tak długo, jak użytkownik nie jest częścią admingrupy, nie będzie mógł sudo rootować. Dla nich korzystać su , trzeba będzie ustawić hasło roota ( passwd root), po czym zalecane jest ustawienie PermitRootLogin=now /etc/ssh/sshd_config.

Kees Cook
źródło
Wielkie dzięki za świetną odpowiedź - specjalnie „adduser” bardzo pomógł!
vishal.biyani
11

Mogę się mylić, ale zawsze muszę zainstalować demona serwera, zanim będę mógł się połączyć (przynajmniej na komputerze) ssh jest domyślnie instalowany, ale to tylko klient

to polecenie instaluje serwer

sudo apt-get install openssh-server

Możesz zmienić port i zatrzymać logowanie roota poprzez edycję

/etc/ssh/sshd_config

Wymaga to jednak ponownego uruchomienia usługi.

sudo service ssh restart

Matt Mootz
źródło
Jest to serwer wirtualny (VPS), więc SSH jest instalowany domyślnie. To mój jedyny interfejs do serwera. sudo /etc/init.d/ssh reloadZamiast tego możesz ponownie załadować konfigurację , ale mimo to dobre informacje.
Oli
8

Jim nie będzie miał dostępu do SSH, dopóki nie ustawisz hasła. Jak wykonać root:

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

Jeśli to polecenie zwraca „!” znak, a następnie logowanie jest wyłączone dla tego konta. Wykonanie passwd jimjako root wyświetli monit o podanie nowego i potwierdzonego ciągu hasła, po którym powyższe polecenie grep powinno zwrócić ciąg skrótu reprezentujący hasło dla jima.

Upewnij się również, czy jim ma domyślnie ustawioną powłokę logowania i istniejący katalog domowy.

Uwaga post lekensteyn zawiera informacje na temat modyfikowania ustawień serwera SSH.

Tok
źródło
„Jeśli to polecenie zwraca znak„! ”, Wówczas logowanie dla tego konta jest wyłączone.” Uwaga: nie oznacza to, że nie możesz SSH; tylko, że nie możesz tego zrobić za pomocą hasła (w przeciwieństwie do klucza publicznego).
bfontaine
3

W moim przypadku miałem grupę, która miała dostęp i użytkownik nie był jej częścią. To rozwiązało dla mnie.

Korzystając z powyższego przykładu z użytkownikiem jimi przyjmij członka grupy jimjako jedyną grupę (wydaj groupspolecenie po zalogowaniu, jimaby znaleźć grupy, których jesteś częścią). W moim /etc/ssh/sshd_configpliku miałem AllowGroups sshuserswpis i dlatego musiałem dodać jimdo sshusersgrupy. Poniżej przedstawiono, w jaki sposób można to osiągnąć:

usermod -a -G sshusers jim

Zastąp grupę i użytkownika odpowiednio do konfiguracji.

Joshua Fricke
źródło
1
powinieneś poprawić swoją odpowiedź, odwołując się do źródła, które lepiej wyjaśnia Twój przykład lub dodając odpowiednie informacje, opierając swój przykład na pierwotnym pytaniu OP. na przykład użytkownik określony jimjako fikcyjny użytkownik w celu zapewnienia kontekstu. artykuł tutaj dobrze to wyjaśnia.
0

Mogą wystąpić sytuacje, w których PasswordAuthenticationta opcja jest domyślnie wyłączona.

Sprawdź /etc/ssh/sshd_configi upewnij się, że PasswordAuthenticationatrybut jest ustawiony na yes.

Aldee
źródło
0

@ Lekensteyn Nie mogę zostawić komentarza do odpowiedzi na pytanie, ponieważ nie mam reputacji - ale próbowałem dołączyć

AllowUsers existingUser,newUser

do mojego pliku / etc / ssh / sshd_config, a teraz nie mogę już ssh z moim istniejącym użytkownikiem lub nowym użytkownikiem.

ptjetty
źródło
Rozumiem twój ból: DI miał kiedyś ten sam problem. Rozwiązanie: AllowUsers existingUser@* newUser@*
İsmail Atkurt