Konfigurowanie i weryfikowanie protokołu SFTP za pomocą uwierzytelniania kluczem publicznym na klientach i serwerach
środowisko
- Windows
-
- Windows 10 Pro
- System Windows Server 2019
- Okna 7
- Windows Server 2012 R2
- OpenSSH
-
- 7,7p1
- 8.1p1 - Beta
※ Działa w innych wersjach, ale jest niepotwierdzony
Na początku
Ostatnim razem skonfigurowano serwer SFTP w celu sprawdzenia, czy uwierzytelnianie hasłem umożliwia wysyłanie i odbieranie plików. Tym razem sftp wysyła i odbiera pliki przy użyciu uwierzytelniania klucza publicznego.
Przygotowanie z wyprzedzeniem
- Klient ma zainstalowanego klienta OpenSSH
- Serwer ma zainstalowany serwer OpenSSH.
- Serwer uruchamia usługę OpenSSH i port 22 jest zwalniany.
Tworzenie kluczy prywatnych i publicznych w kliencie
Zaloguj się do klienta. Klucze prywatne i publiczne mogą być również tworzone po stronie serwera, ale klucz prywatny będzie klientem, a klucz publiczny będzie przechowywany przez serwer. Twórz po stronie klienta.
Uruchom program PowerShell z uprawnieniami administratora.
Utwórz plik, przejdź do dowolnego folderu za pomocą polecenia cd i wpisz następujące polecenie:
ssh-keygen -t rsa -f id_rsa
Możesz umieścić hasło (hasło) w kluczu, więc w razie potrzeby umieść je.
Jeśli klucz zostanie pomyślnie wygenerowany, klucze publiczne i prywatne zostaną utworzone w folderze w następujący sposób: "id_rsa" to klucz prywatny, a "id_rsa.pub" to klucz publiczny.
Umieszczanie klucza publicznego na serwerze
Zaloguj się do systemu Windows przy użyciu konta SFTP serwera.
Umieść utworzony klucz publiczny "id_rsa.pub" w następującym folderze na serwerze. 「. jeśli nie masz folderu "ssh", utwórz go. Zmień także nazwę pliku na "authorized_keys". (Zastąp <> nazwą użytkownika, do których logujesz się za pomocą protokołu SFTP).
- C:\Users\< nazwa_użytkownika>\.ssh
Należy pamiętać, że tylko użytkownicy z "administratorami" lub użytkownikami SFTP powinni mieć dostęp do tego pliku. Połączenia Sftp zawsze kończą się niepowodzeniem, jeśli inni użytkownicy mają dostęp. Na przykład NG ma grupę Użytkownicy lub Wszyscy dołączoną do uprawnienia.
W tym przykładzie ". Prawa dostępu do folderu "ssh" to "Group:SYSTEM", "Group: Administrators" i "User: sftptest". Jeśli nie możesz usunąć uprawnienia, wyłącz dziedziczenie uprawnień.
Włączanie uwierzytelniania kluczem publicznym na serwerze
Zaloguj się do serwera z uprawnieniami administratora użytkowników, a następnie otwórz następujące foldery:
- C: \\ ProgramData \\ ssh
Ponieważ istnieje plik o nazwie "sshd_config", skopiuj go i zmień nazwę pliku na "sshd_config_default" i skonfiguruj kopię zapasową.
Otwórz "sshd_config" w edytorze tekstu uruchomionym z uprawnieniami administratora.
Aby włączyć uwierzytelnianie za pomocą klucza publicznego, zmień je w następujący sposób:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Ponadto uwierzytelnianie hasłem jest domyślnie włączone, więc jeśli chcesz je wyłączyć, zmień je w następujący sposób.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Chcę umieścić klucz publiczny dla każdego konta SFTP, więc skomentuję następujący wiersz:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Jeśli chcesz określić katalog główny dla każdego konta SFTP, dodaj następujący wiersz: W zależności od tego, czy to określisz, czy nie, po określeniu ścieżki folderu z klienta może ona zmienić się na format "C:\xxxxx" lub "/xxxxx".
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
przykład
Match User TestUser
ChrootDirectory C:\Users\TestUser
Po zapisaniu sshd_config uruchom ponownie serwer OpenSSH.
Wysyłanie i odbieranie plików od klientów z uwierzytelnianiem za pomocą klucza publicznego
Umieść klucz prywatny "id_rsa" utworzony przed nawiązaniem połączenia z protokołem SFTP w folderze dostępnym tylko dla użytkownika, który korzysta z protokołu SFTP. Należy pamiętać, że połączenia sftp nie posiądą się, jeśli zostaną umieszczone w folderze, do którego dostęp mają inni użytkownicy. Zwłaszcza jeśli folder ma uprawnienia dla grup Użytkownicy i Wszyscy, jest to NG.
Zasadniczo jest to zalecane, ponieważ automatycznie odwołuje się do ścieżki, jeśli umieścisz ją w następującym folderze.
- C:\Users\< nazwa_użytkownika>\.ssh
Klient ". Prawa dostępu do folderu "ssh" to "Group:SYSTEM", "Group: Administrators", "User: < Login user >".
Jeśli chcesz uzyskać dostęp do sftp za pomocą klucza prywatnego, wpisz polecenie w następujący sposób (zastąp <>): Jeśli masz skonfigurowane hasło, wprowadź również hasło.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Jeśli zalogujesz się pomyślnie, zostaniesz przełączony na wyświetlanie zalogowanego użytkownika.
Możesz również sprawdzić, czy możesz zalogować się za pomocą polecenia dir.
Teraz, gdy przygotowałeś plik o nazwie "test3.txt", wyślij plik za pomocą polecenia put.
put c:\temp\test3.txt
Jeśli spojrzysz na folder C:\Users\sftptest po stronie serwera, zobaczysz, że plik test3.txt jest wysyłany.
Spróbuj uzyskać od klienta.
get test3.txt c:\temp\test4.txt
Udało mi się potwierdzić, że plik można uzyskać.
Streszczenie
Można było wysyłać i odbierać pliki za pomocą protokołu SFTP przy użyciu uwierzytelniania za pomocą klucza publicznego. Korzystając z klucza publicznego, strona serwera nie będzie mogła poznać hasła. Pozwala na bezpieczniejszą wymianę plików niż uwierzytelnianie hasłem.