Come esportare / importare l'elenco delle sessioni di PuTTy?


Risposte:


1238

Esportare

cmd.exe, richiede un prompt elevato:

Solo sessioni:

regedit /e "%USERPROFILE%\Desktop\putty-sessions.reg" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

Tutte le impostazioni:

regedit /e "%USERPROFILE%\Desktop\putty.reg" HKEY_CURRENT_USER\Software\SimonTatham

PowerShell:

Solo sessioni:

reg export HKCU\Software\SimonTatham\PuTTY\Sessions ([Environment]::GetFolderPath("Desktop") + "\putty-sessions.reg")

Tutte le impostazioni:

reg export HKCU\Software\SimonTatham ([Environment]::GetFolderPath("Desktop") + "\putty.reg")

Importare

Fare doppio clic sul *.regfile e accettare l'importazione.

Modi alternativi:

cmd.exe, richiede un prompt dei comandi elevato:

regedit /i putty-sessions.reg
regedit /i putty.reg

PowerShell:

reg import putty-sessions.reg
reg import putty.reg

Nota : non sostituire SimonTatham con il tuo nome utente.

Nota : creerà un regfile sul desktop dell'utente corrente.

Nota : non esporterà le chiavi SSH correlate.


3
@NamGVU Questo perché il percorso ha una cartella con spazi. Passa a uno che non ce l'aveva.
m0nhawk,

3
@NamGVU Non sostituire% userprofile% con il tuo nome utente, lascialo così com'è.
Asrar,

4
Come si importa in uno stucco diverso su una macchina diversa?
Pete,

4
Oh ok, doppio clic ... capito
Pete

7
Second Command ha funzionato per me su Windows 7, tuttavia, dovevo eseguire CMD come amministratore.
The Humble Rat

46

Quando ho provato le altre soluzioni ho riscontrato questo errore:

Registry editing has been disabled by your administrator.

Phooey a quello, dico io!

Ho messo insieme i seguenti script PowerShell per esportare e importare le impostazioni di PuTTY. Il file esportato è un file .reg di Windows e verrà importato in modo pulito se si dispone dell'autorizzazione, altrimenti utilizzare import.ps1 per caricarlo.

Attenzione : scherzare con il registro in questo modo è una Bad Idea ™ e non so davvero cosa sto facendo. Usa gli script di seguito a tuo rischio, e sii pronto a far rivedere l'immagine del tuo reparto IT e farti domande scomode su quello che stavi facendo.

Sulla macchina di origine:

.\export.ps1

Sulla macchina target:

.\import.ps1 > cmd.ps1
# Examine cmd.ps1 to ensure it doesn't do anything nasty
.\cmd.ps1

export.ps1

# All settings
$registry_path = "HKCU:\Software\SimonTatham"
# Only sessions
#$registry_path = "HKCU:\Software\SimonTatham\PuTTY\Sessions"
$output_file = "putty.reg"

$registry = ls "$registry_path" -Recurse

"Windows Registry Editor Version 5.00" | Out-File putty.reg
"" | Out-File putty.reg -Append

foreach ($reg in $registry) {
  "[$reg]" | Out-File putty.reg -Append
  foreach ($prop in $reg.property) {
    $propval = $reg.GetValue($prop)
    if ("".GetType().Equals($propval.GetType())) {
      '"' + "$prop" + '"' + "=" + '"' + "$propval" + '"' | Out-File putty.reg -Append
    } elseif ($propval -is [int]) {
      $hex = "{0:x8}" -f $propval
      '"' + "$prop" + '"' + "=dword:" + $hex | Out-File putty.reg -Append
    }
  }
  "" | Out-File putty.reg -Append
}

import.ps1

$input_file = "putty.reg"

$content = Get-Content "$input_file"

"Push-Location"
"cd HKCU:\"

foreach ($line in $content) { 
  If ($line.StartsWith("Windows Registry Editor")) {
    # Ignore the header
  } ElseIf ($line.startswith("[")) {
    $section = $line.Trim().Trim('[', ']')
    'New-Item -Path "' + $section + '" -Force' | %{ $_ -replace 'HKEY_CURRENT_USER\\', '' }
  } ElseIf ($line.startswith('"')) {
    $linesplit = $line.split('=', 2)
    $key = $linesplit[0].Trim('"')
    if ($linesplit[1].StartsWith('"')) {
      $value = $linesplit[1].Trim().Trim('"')
    } ElseIf ($linesplit[1].StartsWith('dword:')) {
      $value = [Int32]('0x' + $linesplit[1].Trim().Split(':', 2)[1])
      'New-ItemProperty "' + $section + '" "' + $key + '" -PropertyType dword -Force' | %{ $_ -replace 'HKEY_CURRENT_USER\\', '' }
    } Else {
      Write-Host "Error: unknown property type: $linesplit[1]"
      exit
    }
    'Set-ItemProperty -Path "' + $section + '" -Name "' + $key + '" -Value "' + $value + '"' | %{ $_ -replace 'HKEY_CURRENT_USER\\', '' }
  }
}

"Pop-Location"

Mi scuso per il codice non idiomatico, non ho molta familiarità con Powershell. I miglioramenti sono benvenuti!


3
Ha funzionato perfettamente, che risparmio di tempo. Un'aggiunta ... Ho dovuto seguire le istruzioni qui per impostare i permessi: stackoverflow.com/questions/4037939/… .
Jacob Zwiers,

1
È stato di grande aiuto! Avevo diverse posizioni nel registro dovevo solo modificare il percorso in entrambi e basta :)
SidJ,

Aspetta, quindi PowerShell elude i criteri di gruppo? Mi chiedo quanto tempo ci vorrà prima che si rattoppi.
Quolonel Questions,

Non sono sicuro, ma siamo a quattro anni e contando;)
dwurf

Ho provato a non funzionare per me.
Velmurugan,

44
  1. Avvia Esegui, quindi digita la finestra a discesa Apri: regedit

  2. Passare a, proprio come in Esplora risorse di Windows:
    HKEY_CURRENT_USER \ Software \ SimonTatham

  3. Fare clic con il tasto destro del mouse sul tasto 'SimonTatham' (icona della directory), selezionare Esporta
    Assegnare al file un nome (ad esempio) putty.reg e salvarlo nella propria posizione per un
    uso successivo.
  4. Chiudi l'editor del registro.

Fatto.


34

Se si desidera importare le impostazioni su PuTTY PortableÈ possibile utilizzare putty.reg file.

Mettilo su questo percorso [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. Il programma lo importerà


23

Per quelli di voi che hanno bisogno di importare Putty da file di registro offline, ad esempio quando si esegue il ripristino da un sistema danneggiato o semplicemente si trasferisce su una nuova macchina e si prelevano i dati da quella vecchia unità, c'è un'altra soluzione degna di nota:

http://www.nirsoft.net/utils/registry_file_offline_export.html

Questa fantastica e gratuita applicazione console esporterà l'intero registro o solo una chiave di registro specifica. Nel mio caso ho semplicemente copiato il file di registro da una vecchia unità nella stessa directory dello strumento esportatore e quindi ho usato il seguente comando e sintassi nella finestra CMD eseguita come amministratore:

RegFileExport.exe NTUSER.DAT putty.reg "HKEY_CURRENT_USER \ Software \ SimonTatham"

Dopo aver importato il file .reg e avviato Putty tutto era lì. Semplice ed efficiente


2
Questa risposta è abbastanza ristretta di un caso d'uso da includere in una domanda separata per il recupero offline. Grazie.
Frank Phillips,

4
Vorrei aggiungere una nota che NTUSER.DAT si trova in Users / [Nome utente] come file di sistema protetto e non in Windows / SYSTEM32 / Config.
Frank Phillips,

13

Per coloro che non vogliono fare confusione con il registro, è stata creata una variante di stucco che salva nel file. Si trova qui: http://jakub.kotrla.net/putty/

Sarebbe bello se il team di stucco lo prendesse come opzione nella distribuzione principale.


13

È stato molto più semplice importare l'esportazione del registro rispetto a quanto indicato sopra. + Semplicemente:

  1. fare clic con il tasto destro sul file e
  2. seleziona "Unisci"

Ha funzionato come un campione su Win 7 Pro.


2
Ha lavorato per me su Windows 10 anche
Gen

3
Posso confermare - funziona perfettamente su Win10. La "importazione" più semplice di sempre. Grazie!
d-wade,

10

Esempio:
come trasferire la configurazione dello stucco e la configurazione della sessione da un account utente a un altro, ad esempio quando viene creato un nuovo account e si desidera utilizzare le sessioni / configurazioni dello stucco dal vecchio account

Processo:
- Esporta la chiave di registro dal vecchio account in un file
- Importa chiave di registro dal file in un nuovo account

Esporta chiave reg: (dall'account VECCHIO)

  1. Accedi al vecchio account, ad es. Tomold
  2. Apri il normale 'prompt dei comandi' (NON admin!)
  3. Digita "regedit"
  4. Passare alla sezione del registro in cui è memorizzata la configurazione, ad es. [HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham] e fare clic su di essa
  5. Seleziona "Esporta" dal menu file o fai clic con il pulsante destro del mouse (radio ctrl "ramo selezionato")
  6. Salvare in un file e denominarlo, ad esempio "puttyconfig.reg"
  7. Esci di nuovo

Chiave di importazione: (nel NUOVO account)

  1. Accedi al NUOVO account, ad es. Tom

  2. Apri il normale 'prompt dei comandi' (NON admin!)

  3. Digita "regedit"

  4. Seleziona 'Importa' dal menu

  5. Seleziona il file di registro da importare, ad esempio "puttyconfig.reg"

  6. Fatto

Nota:
non utilizzare un "prompt dei comandi dell'amministratore" poiché le impostazioni si trovano in "[HKEY_CURRENT_USER ...]" e regedit verrebbe eseguito come amministratore e mostrerebbe quella sezione per l'utente amministratore piuttosto che per l'utente da cui trasferire e / o per.


9

Un miglioramento della soluzione di bumerang in cui importare i dati PuTTY portable.

putty.regSpostare semplicemente esportato (con la soluzione m0nhawk) su PuTTYPortable\Data\settings\non funzionava. PuTTY Portable esegue il backup del file e creane uno nuovo vuoto.

Per ovviare a questo problema, unire entrambi putty.regcopiando manualmente la configurazione che si desidera migrare dalla riga esportata putty.regdi seguito alla nuova appena creata PuTTYPortable\Data\settings\putty.reg.

REGEDIT4

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]
"RandSeedFile"="D:\\Programme\\PuTTYPortable\\Data\\settings\\PUTTY.RND"

8

La risposta inviata da @ m0nhawk non sembra funzionare mentre collaudo su un computer con Windows 7. Invece, usando i seguenti script si esporterebbero / importerebbero le impostazioni di putty:

::export
@echo off
set regfile=putty.reg
pushd %~dp0

reg export HKCU\Software\SimonTatham %regfile% /y

popd

-

::import
@echo off
pushd %~dp0
set regfile=putty.reg

if exist %regfile% reg import %regfile%

popd

7

La risposta di m0nhawk non ha funzionato per me su Windows 10: ha richiesto un prompt dei comandi elevato e si è rifiutato di emettere un file.

Funzionava e non richiedeva elevazione:

reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY putty.reg



3

Esiste uno script di PowerShell su ratil.life/first-useful-powershell-script-putty-to-ssh-config che può convertire le sessioni in un formato che può essere utilizzato in .ssh/config. Può anche essere trovato su GitHub .

Questo estratto contiene le intestazioni principali del codice e stamperà la configurazione risultante direttamente su stdout:

# Registry path to PuTTY configured profiles
$regPath = 'HKCU:\SOFTWARE\SimonTatham\PuTTY\Sessions'

# Iterate over each PuTTY profile
Get-ChildItem $regPath -Name | ForEach-Object {

    # Check if SSH config
    if (((Get-ItemProperty -Path "$regPath\$_").Protocol) -eq 'ssh') {
        # Write the Host for easy SSH use
        $host_nospace = $_.replace('%20', $SpaceChar)
        $hostLine =  "Host $host_nospace"

        # Parse Hostname for special use cases (Bastion) to create SSH hostname
        $puttyHostname = (Get-ItemProperty -Path "$regPath\$_").HostName
        if ($puttyHostname -like '*@*') {
            $sshHostname = $puttyHostname.split("@")[-1]
            }
        else { $sshHostname = $puttyHostname }
        $hostnameLine = "`tHostName $sshHostname"   

        # Parse Hostname for special cases (Bastion) to create User
        if ($puttyHostname -like '*@*') {
            $sshUser = $puttyHostname.split("@")[0..($puttyHostname.split('@').length - 2)] -join '@'
            }
        else { $sshHostname = $puttyHostname }
        $userLine = "`tUser $sshUser"   

        # Parse for Identity File
        $puttyKeyfile = (Get-ItemProperty -Path "$regPath\$_").PublicKeyFile
        if ($puttyKeyfile) { 
            $sshKeyfile = $puttyKeyfile.replace('\', '/')
            if ($prefix) { $sshKeyfile = $sshKeyfile.replace('C:', $prefix) }
            $identityLine = "`tIdentityFile $sshKeyfile"
            }

        # Parse Configured Tunnels
        $puttyTunnels = (Get-ItemProperty -Path "$regPath\$_").PortForwardings
        if ($puttyTunnels) {
            $puttyTunnels.split() | ForEach-Object {

                # First character denotes tunnel type
                $tunnelType = $_.Substring(0,1)
                # Digits follow tunnel type is local port
                $tunnelPort = $_ -match '\d*\d(?==)' | Foreach {$Matches[0]}
                # Text after '=' is the tunnel destination
                $tunnelDest = $_.split('=')[1]

                if ($tunnelType -eq 'D') {
                    $tunnelLine = "`tDynamicForward $tunnelPort $tunnelDest"
                }

                ElseIf ($tunnelType -eq 'R') {
                    $tunnelLine = "`tRemoteForward $tunnelPort $tunnelDest"
                }

                ElseIf ($tunnelType -eq 'L') {
                    $tunnelLine = "`tLocalForward $tunnelPort $tunnelDest"
                }

            }

        # Parse if Forward Agent is required
        $puttyAgent = (Get-ItemProperty -Path "$regPath\$_").AgentFwd
        if ($puttyAgent -eq 1) { $agentLine = "`tForwardAgent yes" }

        # Parse if non-default port
        $puttyPort = (Get-ItemProperty -Path "$regPath\$_").PortNumber
        if (-Not $puttyPort -eq 22) { $PortLine = "`tPort $puttyPort" }

        }

        # Build output string
        $output = "$hostLine`n$hostnameLine`n$userLine`n$identityLine`n$tunnelLine`n$agentLine`n"

        # Output to file if set, otherwise STDOUT
        if ($outfile) { $output | Out-File $outfile -Append}
        else { Write-Host $output }
    }

}

2

Se, come me, hai installato una nuova Windows e solo dopo aver ricordato le sessioni di stucco, puoi comunque importarle, se hai il vecchio disco rigido di Windows o almeno la tua vecchia directory "home" di cui è stato eseguito il backup ( C:\Users\<user_name>).

In questa directory dovrebbe esserci un NTUSER.DATfile. È nascosto per impostazione predefinita, quindi è necessario abilitare i file nascosti in Esplora risorse di Windows o utilizzare un altro browser di file. Questo file contiene il fileHKEY_CURRENT_USER ramo del tuo vecchio registro di Windows.

Per usarlo, è necessario aprire regeditsulla nuova finestra di Windows e selezionare il HKEY_USERStasto.

Quindi selezionare File-> Load Hive...e trovare la vecchia directory "home" della vecchia installazione di Windows. In questa directory dovrebbe esserci un NTUSER.DATfile. È nascosto per impostazione predefinita, quindi, se non hai abilitato la visualizzazione dei file nascosti nelle proprietà di Windows Explorer, puoi semplicemente inserire manualmente il nome del file nella File namecasella di input della finestra di dialogo "Carica hive" e premere Enter. Quindi nella finestra di dialogo successiva inserisci un nome chiave per caricare il vecchio registro. es tmp.

Il HKEY_CURRENT_USERramo del tuo vecchio registro ora dovrebbe essere accessibile sotto il HKEY_USERS\tmpramo del tuo registro attuale.

Ora esporta il HKEY_USERS\tmp\Software\SimonTathamramo in un putty.regfile, apri questo file nel tuo editor di testo preferito e trova e sostituisci tutte le HKEY_USERS\tmpstringhe con HKEY_CURRENT_USER. Ora salva il .regfile.

Ora puoi importare questo file nel tuo attuale registro di Windows facendo doppio clic su di esso. Vedi la risposta di m0nhawk su come farlo.

Alla fine, seleziona il HKEY_USERS\tmpramo nell'editor del registro, quindi seleziona File-> Unload Hive...e conferma questa operazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.