Configurare e verificare SFTP con autenticazione a chiave pubblica su client e server

Data di creazione della pagina :

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.

image

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.

image

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.

image

image

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

image

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.

image

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.

image

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 <ユーザー名>@<サーバー名>

image

Se accedi correttamente, passerai alla visualizzazione dell'utente connesso.

image

Puoi anche verificare di poter accedere con il comando dir.

image

Ora che hai preparato un file chiamato "test3.txt", invia il file con il comando put.

put c:\temp\test3.txt

image

Se si esamina la cartella C:\Users\sftptest sul lato server, è possibile vedere che il file test3.txt viene inviato.

image

Prova a ottenere dal cliente.

get test3.txt c:\temp\test4.txt

image

Sono stato in grado di confermare che il file è stato in grado di essere ottenuto.

image

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.