Configurare e verificare SFTP con autenticazione a chiave pubblica su client e server
ambiente
- Finestre
-
- Windows 10 Pro
- Windows Server 2019
- Finestre 7
- Windows Server 2012 R2
- OpenSSH
-
- 7,7p1
- 8.1p1 - Beta
※ Funziona in altre versioni, ma non è confermato
Dapprima
L'ultima volta, è stato configurato un server SFTP per verificare che l'autenticazione con password consenta di inviare e ricevere file. Questa volta, sftp invia e riceve file utilizzando l'autenticazione a chiave pubblica.
Preparazione in anticipo
- Nel client è installato un client OpenSSH
- Nel server è installato un server OpenSSH.
- Il server avvia il servizio OpenSSH e la porta 22 viene liberata.
Creare chiavi private e pubbliche nel client
Accedere al client. Le chiavi private e pubbliche possono essere create anche sul lato server, ma la chiave privata sarà il client e la chiave pubblica sarà detenuta dal server. Crea sul lato client.
Avviare PowerShell con diritti di amministratore.
Creare un file, passare a qualsiasi cartella con il comando cd e digitare il seguente comando:
ssh-keygen -t rsa -f id_rsa
Puoi inserire una passphrase (password) nella chiave, quindi per favore inseriscila se necessario.
Se la chiave viene generata correttamente, le chiavi pubbliche e private vengono create nella cartella come segue: "id_rsa" è la chiave privata e "id_rsa.pub" è la chiave pubblica.
Inserire una chiave pubblica sul server
Accedere a Windows con l'account SFTP per il server.
Inserire la chiave pubblica creata "id_rsa.pub" nella seguente cartella sul server. 「. se non si dispone di una cartella "ssh", crearne una. Inoltre, modificare il nome del file in "authorized_keys". (Sostituisci il <> con il nome utente che accedi con SFTP.)
- C:\Utenti\nome utente <>\.ssh
Si noti che solo gli utenti con "amministratori" o utenti SFTP devono avere accesso a questo file. Le connessioni Sftp falliscono sempre se altri utenti hanno accesso. Ad esempio, NG ha un gruppo di Utenti o Everyone aggiunto all'autorizzazione.
In questo esempio, ". I diritti di accesso della cartella "ssh" sono "Group:SYSTEM", "Group: Administrators" e "User: sftptest". Se non è possibile rimuovere un'autorizzazione, disabilitare l'ereditarietà delle autorizzazioni.
Abilitare l'autenticazione a chiave pubblica sul server
Accedere al server con gli utenti delle autorizzazioni amministratore, quindi aprire le seguenti cartelle:
- C: \\ ProgramData \\ ssh
Poiché esiste un file chiamato "sshd_config", copialo e cambia il nome del file in "sshd_config_default" e imposta un backup.
Apri "sshd_config" nell'editor di testo avviato con privilegi di amministratore.
Per abilitare l'autenticazione a chiave pubblica, modificarla come segue:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Inoltre, l'autenticazione con password è abilitata per impostazione predefinita, quindi se si desidera disabilitarla, modificarla come segue.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Voglio inserire una chiave pubblica per ogni account SFTP, quindi commenterò la seguente riga:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Se si desidera specificare la directory principale per ogni account SFTP, aggiungere la riga seguente: A seconda che lo si specifichi o meno, quando si specifica un percorso di cartella dal client, potrebbe cambiare in formato "C:\xxxxx" o "/xxxxx".
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
esempio
Match User TestUser
ChrootDirectory C:\Users\TestUser
Dopo aver salvato sshd_config, riavviare il server OpenSSH.
Inviare e ricevere file da client con autenticazione a chiave pubblica
Inserire la chiave privata "id_rsa" creata prima di connettersi con SFTP in una cartella accessibile solo all'utente che esegue SFTP. Si noti che le connessioni sftp avranno esito negativo se inserite in una cartella a cui possono accedere altri utenti. Soprattutto se la cartella dispone delle autorizzazioni per i gruppi Users e Everyone, è NG.
Fondamentalmente, è consigliato perché farà automaticamente riferimento al percorso se lo metti nella seguente cartella.
- C:\Utenti\nome utente <>\.ssh
Cliente". I diritti di accesso della cartella "ssh" sono "Group:SYSTEM", "Group: Administrators", "User: < Login user >".
Se si desidera accedere a sftp utilizzando la chiave privata, digitare il comando come segue (sostituire il <>): Se hai configurato una passphrase, inserisci anche una passphrase.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Se accedi correttamente, passerai alla visualizzazione dell'utente connesso.
Puoi anche verificare di poter accedere con il comando dir.
Ora che hai preparato un file chiamato "test3.txt", invia il file con il comando put.
put c:\temp\test3.txt
Se si esamina la cartella C:\Users\sftptest sul lato server, è possibile vedere che il file test3.txt viene inviato.
Prova a ottenere dal cliente.
get test3.txt c:\temp\test4.txt
Sono stato in grado di confermare che il file è stato in grado di essere ottenuto.
Sommario
È stato possibile inviare e ricevere file tramite SFTP utilizzando l'autenticazione a chiave pubblica. Utilizzando una chiave pubblica, il lato server non sarà in grado di conoscere la password. Ti consente di scambiare file in modo più sicuro rispetto all'autenticazione con password.