Sftp skonfiguruj tak, aby używał hasła, ale ssh nie będzie używać hasła

15

Czy można skonfigurować użytkownika na Ubuntu z openssh, aby ssh nie używał uwierzytelniania hasła, ale sftp?

Przypuszczam, że jeśli zmieni /etc/ssh/ssh_configsię mieć PasswordAuthentication yesto sprawia, że możliwe jest dla użytkowników, aby korzystać z haseł do logowania się zarówno SSH i SFTP.

Edycja: Moim celem jest umożliwienie niektórym użytkownikom sftp z hasłem zamiast pliku klucza. Ale nie chcę, aby użytkownicy ssh mogli logować się za pomocą hasła, chcę, aby musieli używać pliku klucza. Jeśli to pomaga, nie potrzebuję użytkowników sftp, aby móc się zalogować, muszą tylko zrobić sftp.

dar
źródło

Odpowiedzi:

26

Rozumiem, że masz (przynajmniej w przypadku tego konkretnego problemu) dwie odrębne grupy użytkowników, z których jedna jest w stanie zalogować się przez SSH i uzyskać interaktywną powłokę (zadzwoń do grupy ssh), a druga może zalogować się przez SFTP i uzyskać tylko SFTP shell (nazwijmy grupę sftp).

Teraz utwórz grupy sshi sftpw swoim systemie za pomocą groupadd, umieść odpowiednich użytkowników w grupach ( gpasswd -a $USERNAME $GROUPNAME) i dołącz następujące wiersze na końcu ( to ważne! ) Twojego sshd_configna /etc/ssh/sshd_config:

Match Group sftp
  PasswordAuthentication yes
  # Further directives for users in the "sftp" group

Match Group ssh
  PasswordAuthentication no
  # Further directives for users in the "ssh" group

Przeczytaj o Matchdyrektywie w sshd_config (5) i o dozwolonych wzorcach w ssh_config (5) .

Aby to zadziałało, musisz także ponownie uruchomić sshproces:

sudo /etc/init.d/ssh restart

joschi
źródło
6
Nie jest to dobrze udokumentowane, ale zastosowana zostanie tylko jedna dyrektywa Match; powinieneś umieścić najbardziej szczegółową dyrektywę na wierzchu. Jeśli najpierw wyświetlisz listę sftp, użytkownik, który jest w obu grupach, będzie miał możliwość autoryzacji hasła.
Tobu,
Dzięki! Na sshmoich urządzeniach Ubuntu jest już grupa, więc naprawdę muszę tylko dodawać sftpi umieszczać użytkowników sftp w tej grupie. Połączę twoją odpowiedź z używaniem, scponlyaby powstrzymać użytkowników sftp przed zalogowaniem.
dar
2
Jeśli PasswordAuthenticationzostanie ustawiony nodalszy wzrost, czy to nadal będzie działać? Czy Match Groupzastępuje to dla użytkowników sftp? Ponieważ to właśnie mam i to nie działa. Mogę zalogować się za pomocą klucza, ale nie mogę jako użytkownik sftp.
alphadogg
0

Nie, i nie widzę, jak to poprawiłoby bezpieczeństwo, więc jaki byłby sens?

uprawnione klucze mogą zezwalać na różne polecenia dla różnych kluczy, jeśli o to ci chodzi. W przeciwnym razie masz możliwość utworzenia kilku kont i korzystania z acls lub sudo.

Tobu
źródło
Nie próbuję poprawiać bezpieczeństwa. Staram się ułatwić niektórym użytkownikom korzystanie z hasła zamiast pliku klucza dostępu do sftp. Nie chcę jednak, aby ktokolwiek używał hasła dostępu do ssh.
dar
@dar OK; różne konta wtedy. Gdyby były tym samym kontem, ktoś znający hasło sftp mógłby zastąpić jakiś plik profilu (.ssh / rc, .profile, .bashrc…) i uzyskać takie same uprawnienia jak ktoś znający klucz prywatny.
Tobu,
0

Biorę dźgnięcie w ciemność tutaj, ale może ci się to zainteresować.

Czy sprawiedliwym jest więzienie moich użytkowników SFTP w ich katalogu domowym?

Tyler K.
źródło
Nic nie widzę na temat uwierzytelniania hasła, popraw mnie, jeśli się mylę.
dar
Nie, masz rację. Nie było jasne, co chcesz zrobić z SFTP vs. SSH. Widzę z drugiego komentarza, że ​​chcesz, aby użytkownicy używali hasła do SFTP, ale nie do SSH. Dlaczego?
Tyler K
Ponieważ ci użytkownicy, którzy muszą korzystać z sftp, uważają pliki kluczy za trudne, ale rozumieją, jak wpisywać hasła. Sprowadza się to do problemu z obsługą sftp. Ale chcę zminimalizować obszar ataku, utrzymując hasła poza mieszanką ssh.
dar
SFTP działa najpierw otwierając tunel ssh, a następnie przesyłając pliki przez FTP. Naprawdę nie możesz się rozwieść. Wydaje mi się, że można to zrobić, ustawiając kilka list ACL, ale to naprawdę nie ma sensu.
Tyler K