Logo VRAMfarm VRAMfarm
IT
Registrati

12 novembre 2026 · Team VRAMfarm

SSH su un server GPU da Windows 10 e 11: chiave, connessione, errori risolti

Un portatile Windows con PowerShell aperto, collegato con una chiave a un server GPU: come accedere via SSH a un server GPU da Windows

Windows 10 e 11 includono già lo stesso client ssh usato nelle guide per Mac e Linux, quindi PuTTY non ti serve. Per entrare in un server GPU bastano cinque comandi in PowerShell e circa cinque minuti: controlli che ssh ci sia, crei una chiave, copi il file .pub, lo incolli nella dashboard e lanci il comando di connessione da I miei server. Quasi tutti gli errori “Permission denied” su Windows nascono da tre sbagli, e li trovi tutti e tre più sotto.

Se preferisci non toccare SSH, salta alla sezione su Jupyter: ogni server ha anche un terminale nel browser.

Controlla che OpenSSH sia installato

Apri PowerShell (menu Start, scrivi “PowerShell”) o Windows Terminal. Esegui:

ssh -V

Dovresti vedere una riga con la versione, per esempio OpenSSH_for_Windows_9.5. Windows 10 dagli aggiornamenti del 2018 e tutte le build di Windows 11 hanno il client già attivo.

Se compare un messaggio come “Termine ‘ssh’ non riconosciuto come nome di cmdlet” (o, nel Prompt dei comandi, “‘ssh’ non è riconosciuto come comando interno o esterno”), installalo: Impostazioni → Sistema → Funzionalità facoltative sulle build attuali di Windows 11 (Impostazioni → App → Funzionalità facoltative su Windows 10 e sulle build meno recenti di Windows 11) → Aggiungi una funzionalità (o Visualizza funzionalità) → Client OpenSSH. Chiudi PowerShell, riaprilo e lancia di nuovo ssh -V.

I comandi di questa guida sono per PowerShell. Funzionano anche in Windows Terminal, che di default apre PowerShell. Anche il vecchio Prompt dei comandi (cmd) esegue ssh, ma lì i comandi per copiare la chiave sono diversi; dove serve trovi la versione per cmd.

Crea una chiave e trova il file .pub

Prima controlla se hai già una chiave:

dir $env:USERPROFILE\.ssh\*.pub

Se nell’elenco compare id_ed25519.pub, ce l’hai già: passa alla sezione successiva. Se il messaggio dice che il percorso non esiste, crea una chiave:

ssh-keygen -t ed25519

Premi Invio tre volte: tieni il percorso predefinito e lascia vuota la passphrase, a meno che tu non ne voglia una. Se ti chiede “already exists. Overwrite (y/n)?”, rispondi n. Hai già una chiave, e sovrascriverla la renderebbe inutilizzabile ovunque tu la usi.

La chiave è composta da due file in C:\Users\<tuo nome>\.ssh\:

File Che cos’è Cosa farne
id_ed25519 Chiave privata Resta sul tuo computer. Non incollarla mai da nessuna parte
id_ed25519.pub Chiave pubblica È questa che va nella dashboard

Per vedere la cartella, esegui explorer $env:USERPROFILE\.ssh. Potresti notare che Windows mostra id_ed25519.pub con l’icona di Microsoft Publisher e il tipo “Documento di Microsoft Publisher”. È solo Windows che tira a indovinare dall’estensione .pub. Non fare doppio clic. Clic destro → Apri con → Blocco note, oppure copiala direttamente da PowerShell:

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard

Nel Prompt dei comandi lo stesso comando è type %USERPROFILE%\.ssh\id_ed25519.pub | clip. Negli appunti adesso c’è una sola riga che inizia con ssh-ed25519, seguita da una lunga stringa e dal nome del tuo computer.

Incolla la chiave e collegati

Nella dashboard apri Impostazioni → Accesso ai server → Chiave SSH pubblica, incolla la riga e clicca Salva chiave. La chiave viene aggiunta a ogni nuovo server e anche a quelli già attivi. Lo fai una volta sola: la stessa chiave funziona per tutti i server che avvierai in seguito.

Ora apri I miei server, trova il server attivo e copia il suo comando SSH. Ha questo aspetto, con la tua porta:

ssh -p 31001 root@vramfarm.com

Incollalo in PowerShell (nella maggior parte dei terminali Windows si incolla con il clic destro) e premi Invio. Alla prima connessione SSH chiede Are you sure you want to continue connecting (yes/no/[fingerprint])?. Scrivi yes. Adesso sei sul server come root. Controlla la scheda:

nvidia-smi

Mostra la GPU, la sua memoria e la versione del driver. Se vuoi installare una build specifica di PyTorch, la guida a driver e CUDA spiega come leggere quella riga. Scrivi exit per uscire. Ogni server ha la sua porta, quindi il comando cambia a ogni avvio; quello in I miei server è sempre quello aggiornato.

La procedura completa per Mac e Linux, con gli stessi passaggi affiancati, è nella guida alla chiave SSH.

“Permission denied (publickey)” e gli altri errori su Windows

Permission denied (publickey), oppure chiede una password

Il server non ha accettato la tua chiave. I server non hanno password, quindi una richiesta di password significa la stessa cosa. Su Windows la causa è quasi sempre una di queste:

  1. Hai incollato la cosa sbagliata. Confronta la riga nelle Impostazioni con l’output di Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub. Se quello che hai incollato inizia con -----BEGIN OPENSSH PRIVATE KEY-----, è la tua chiave privata: cancellala dal campo e incolla al suo posto la riga del .pub.
  2. La riga si è spezzata. Copiare dal Blocco note con l’a capo automatico attivo, o da un’email, può aggiungere interruzioni di riga. La chiave deve essere un’unica riga continua.
  3. La chiave ha un altro nome. Se l’hai salvata come gpu_key o l’hai creata con PuTTYgen, ssh non la trova da solo. Indicagliela: ssh -i $env:USERPROFILE\.ssh\gpu_key -p 31001 root@vramfarm.com. Un file .ppk di PuTTY con questo comando non funziona affatto; vedi le domande frequenti più sotto.

Se hai impostato una passphrase quando hai creato la chiave, SSH te la chiede con le parole Enter passphrase for key. È la password della tua chiave, non del server.

WARNING: UNPROTECTED PRIVATE KEY FILE

SSH rifiuta una chiave privata che altri utenti di Windows possono leggere, cosa che succede se il file è stato copiato da un altro computer o da una cartella condivisa. Correggi i permessi in modo che solo tu possa leggerlo:

icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "$($env:USERNAME):(R)"

REMOTE HOST IDENTIFICATION HAS CHANGED

I server vanno e vengono, e una porta che hai usato la settimana scorsa ora può appartenere a un altro server. Il tuo computer ricorda quello vecchio e ti avvisa. Elimina la vecchia voce per quella porta, poi collegati di nuovo:

ssh-keygen -R "[vramfarm.com]:31001"

Connection refused, oppure connection timed out

Refused di solito significa che il server si sta ancora avviando o si è già fermato: aspetta lo stato Attivo in I miei server. Timed out su una rete aziendale o universitaria spesso vuol dire che la rete blocca le connessioni in uscita verso porte insolite. Prova con l’hotspot del telefono per averne la conferma. Se la causa è questa, usa il terminale di Jupyter descritto qui sotto, che passa dal normale HTTPS del browser.

Chiede la passphrase della chiave ogni volta

Lascia che sia l’ssh-agent di Windows a ricordarla. In una finestra di PowerShell aperta come amministratore:

Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

Niente SSH: il terminale di Jupyter

Puoi fare a meno delle chiavi del tutto. In I miei server clicca Apri Jupyter, poi File → New → Terminal. Ottieni una shell sullo stesso server come root, nel browser, senza chiave e senza installare nessun client. Tutto ciò che in questa guida gira sul server (nvidia-smi, pip install, python train.py) funziona anche lì.

Il file browser di Jupyter gestisce anche i file: trascinali nel pannello a sinistra per caricarli, clic destro su un file → Download per salvarlo sul tuo computer. Va bene per notebook, script e file fino a qualche centinaio di megabyte. Per i gigabyte la scheda del browser deve restare aperta per tutto il tempo e un caricamento interrotto riparte da capo, quindi usa scp (più sotto) o scarica direttamente sul server; la guida al trasferimento dei dataset mette a confronto le opzioni.

Un’abitudine da prendere fin dal primo giorno: avvia i lavori lunghi dentro tmux o con nohup, così continuano anche quando chiudi la scheda. La guida ai server inattivi mostra entrambi i metodi e come fermare il server in automatico quando il lavoro finisce.

VS Code e Cursor con Remote SSH

Modificare i file sul server come se fossero in locale è il modo più comodo di lavorare, e usa la stessa chiave SSH.

  1. In VS Code installa l’estensione Remote - SSH di Microsoft.
  2. Apri C:\Users\<tuo nome>\.ssh\config nel Blocco note (crea il file se non esiste; fai attenzione che il Blocco note non aggiunga .txt) e aggiungi:
Host gpu
    HostName vramfarm.com
    Port 31001
    User root
    IdentityFile ~/.ssh/id_ed25519
  1. Premi F1, scegli Remote-SSH: Connect to Host…, seleziona gpu e, se te lo chiede, scegli Linux.
  2. File → Open Folder → /workspace.

Alla prima connessione VS Code installa la sua parte server sulla macchina: ci vuole un minuto e conta come un piccolo download. Finisce in /root/.vscode-server, fuori da /workspace, quindi viene installata di nuovo su ogni nuovo server. Quando avvii un nuovo server, cambia solo la riga Port. Con la voce gpu al suo posto, anche ssh gpu in PowerShell funziona.

Cursor funziona allo stesso modo: ha la sua estensione Remote SSH e legge lo stesso file config.

Una cosa da sapere: una finestra di VS Code aperta tiene viva una connessione SSH, e una connessione aperta conta come utilizzo del server, proprio come una finestra di PowerShell con una sessione SSH mai chiusa. Finché è aperta, la protezione dall’inattività non ti avvisa e non ferma il server, quindi chiudila quando hai finito, oppure ferma il server.

Copiare file con scp

scp arriva con lo stesso client OpenSSH. Fai attenzione alla -P maiuscola per la porta; ssh usa una -p minuscola.

# carica un file sul server
scp -P 31001 .\dataset.zip root@vramfarm.com:/workspace/

# scarica un singolo risultato
scp -P 31001 root@vramfarm.com:/workspace/outputs/result.png .

# scarica un'intera cartella
scp -r -P 31001 root@vramfarm.com:/workspace/ComfyUI/output .\output

Migliaia di file piccoli si copiano lentamente, uno alla volta. Prima comprimili sul server, poi scarica un solo archivio. Windows 10 e 11 includono tar, quindi puoi estrarlo senza strumenti aggiuntivi:

ssh -p 31001 root@vramfarm.com "tar czf /workspace/out.tgz -C /workspace/ComfyUI output"
scp -P 31001 root@vramfarm.com:/workspace/out.tgz .
tar xzf out.tgz

Se un scp recente si interrompe con “subsystem request failed”, aggiungi -O per usare il vecchio protocollo di copia. rsync, che riprende i trasferimenti interrotti, non fa parte di Windows; puoi usarlo dentro WSL. Se preferisci una finestra in cui trascinare i file, WinSCP funziona con la stessa chiave: scegli SFTP, inserisci host e porta da I miei server, utente root, e lascia che converta la tua chiave OpenSSH quando te lo propone.

Ogni gigabyte che sposti in entrata o in uscita conta come traffico alla tariffa della macchina, indicata prima dell’avvio, di solito intorno a un centesimo per GB o meno. E prima di fermare il server ricorda che il suo disco viene cancellato: scarica quello che ti serve o clicca Salva e ferma per conservare /workspace. Cosa sopravvive e cosa no lo trovi in cosa succede ai tuoi file quando fermi una GPU.

Domande sull’argomento

Posso noleggiare un server con Windows?

No. I server sono container Linux, che è ciò che si aspettano PyTorch, ComfyUI e quasi tutti gli strumenti di IA. Li controlli da Windows tramite PowerShell, VS Code o il browser.

Ho già una chiave creata con PuTTYgen. Posso usarla?

Sì. Apri la chiave in PuTTYgen e copia il testo nel riquadro della chiave pubblica per authorized_keys di OpenSSH: una sola riga che inizia con ssh-ed25519 o ssh-rsa. Incollala nelle Impostazioni. L'ssh di PowerShell non legge i file .ppk, quindi per collegarti da PowerShell crea una nuova chiave con ssh-keygen oppure esporta la chiave privata con Conversions, Export OpenSSH key.

Posso usare una password al posto della chiave?

No. I server accettano solo chiavi. Se non riesci a far funzionare una chiave, usa Apri Jupyter in I miei server e avvia lì un terminale: è lo stesso server e non serve nessuna chiave.

Con quale nome utente accedo?

root. Il comando in I miei server lo contiene già, insieme all'host e alla porta del tuo server.

Trova la GPU in cui entra il tuo modello

Scegli un modello e vedi la scheda più economica con VRAM sufficiente, con fatturazione al minuto in euro.