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
jim
przez resztę tego). Chcę, żeby mieli/home/
katalog. - Daj
jim
dostęp do SSH. - Pozwól
jim
nasu
rootowanie, ale nie wykonywaniesudo
operacji. - 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ż, useradd
ale z jakiegoś powodu nie mogę się zalogować jako użytkownik utworzony przy użyciu SSH. Czy muszę pokonać SSHd, aby na to pozwolić?
/etc/nologin
plik, ale jest pusty. Usunąłem go i ponownie uruchomiłem ssh, ale nadal reaguje,Permission denied, please try again.
gdy próbuję się zalogować.Odpowiedzi:
Edytuj (jako root)
/etc/ssh/sshd_config
. Dołącz do niego następujące elementy:Port 1234
powoduje, ż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 jim
pozwala użytkownikowijim
zalogować 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):Zmiany w pliku konfiguracyjnym
/etc/ssh/sshd_config
nie są natychmiast stosowane, aby ponownie załadować konfigurację, uruchom:źródło
root
zalogować (być może nadal konfigurujesz serwer), musisz ustawićPermitRootLogin
opcję,yes
a także dodaćroot
doAllowUsers
.useradd -m -G sudo,adm -s /bin/bash mecharok
ipasswd mecharok
AllowUsers username1,username2
aby ograniczyć logowanie SSH do tych użytkowników. Upewnij się, żesshd
został ponownie załadowany. Jeśli to nie pomoże, utwórz nowe pytanie.SSH jest bardzo wybredny, jeśli chodzi o uprawnienia do katalogu i plików. Upewnić się, że:
Skopiuj swój klucz publiczny do pliku autoryzowanych_kluczy.
Istnieje NIE trzeba dodać użytkownika do / etc / ssh / ssh_config.
źródło
~./ssh
jako root i nigdy nie przekazałem własności użytkownika./root/.ssh/authorized_keys
zamiast/home/bob/.ssh/authorized_keys
.ssh_config
. Wystarczyło skonfigurować ten katalog i plik.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.Pojawią się wskazówki,
/var/log/auth.log
dlaczego SSH (lub PAM) odrzuca próbę logowania. Dodatkowe wskazówki można znaleźć, używając-v
opcji z klientem ssh . Kilka typowych sytuacji, niektóre wymienione w innych odpowiedziach:man passwd
, spróbuj zresetować hasło lub sprawdzić zawartość/etc/shadow
)./etc/ssh/sshd_config
jest skonfigurowany tak, aby uniemożliwić login (DenyUsers
,AllowUsers
,PasswordAuthentication
,PubkeyAuthentication
,UsePAM
etc, patrzman sshd_config
)./etc/shells
./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ą
admin
grupy, nie będzie mógł sudo rootować. Dla nich korzystać su , trzeba będzie ustawić hasło roota (passwd root
), po czym zalecane jest ustawieniePermitRootLogin=no
w/etc/ssh/sshd_config
.źródło
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
źródło
sudo /etc/init.d/ssh reload
Zamiast tego możesz ponownie załadować konfigurację , ale mimo to dobre informacje.Jim nie będzie miał dostępu do SSH, dopóki nie ustawisz hasła. Jak wykonać root:
Jeśli to polecenie zwraca „!” znak, a następnie logowanie jest wyłączone dla tego konta. Wykonanie
passwd jim
jako 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.
źródło
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
jim
i przyjmij członka grupyjim
jako jedyną grupę (wydajgroups
polecenie po zalogowaniu,jim
aby znaleźć grupy, których jesteś częścią). W moim/etc/ssh/sshd_config
pliku miałemAllowGroups sshusers
wpis i dlatego musiałem dodaćjim
dosshusers
grupy. Poniżej przedstawiono, w jaki sposób można to osiągnąć:Zastąp grupę i użytkownika odpowiednio do konfiguracji.
źródło
jim
jako fikcyjny użytkownik w celu zapewnienia kontekstu. artykuł tutaj dobrze to wyjaśnia.Mogą wystąpić sytuacje, w których
PasswordAuthentication
ta opcja jest domyślnie wyłączona.Sprawdź
/etc/ssh/sshd_config
i upewnij się, żePasswordAuthentication
atrybut jest ustawiony nayes
.źródło
@ Lekensteyn Nie mogę zostawić komentarza do odpowiedzi na pytanie, ponieważ nie mam reputacji - ale próbowałem dołączyć
do mojego pliku / etc / ssh / sshd_config, a teraz nie mogę już ssh z moim istniejącym użytkownikiem lub nowym użytkownikiem.
źródło
AllowUsers existingUser@* newUser@*