Comment exporter / importer la liste des sessions PuTTy?

678

Y a-t-il un moyen de faire cela?

Ou dois-je prendre manuellement chaque enregistrement du Registre?

s.webbandit
la source

Réponses:

1238

Exportation

cmd.exe, nécessitent une invite élevée:

Seules les sessions:

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

Tous les paramètres:

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

Powershell:

Seules les sessions:

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

Tous les paramètres:

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

Importation

Double-cliquez sur le *.regfichier et acceptez l'importation.

Des moyens alternatifs:

cmd.exe, nécessitent une invite de commande élevée:

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

PowerShell:

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

Remarque : ne remplacez pas SimonTatham par votre nom d'utilisateur.

Remarque : Il créera un regfichier sur le bureau de l'utilisateur actuel.

Remarque : il n'exportera pas les clés SSH associées.

m0nhawk
la source
3
@NamGVU C'est parce que le chemin a un dossier avec des espaces. Passez à celui qui ne l'avait pas.
m0nhawk
3
@NamGVU Ne remplacez pas% userprofile% par votre nom d'utilisateur, laissez-le tel quel.
Asrar
4
Comment l'importez-vous dans un Putty différent sur une machine différente?
Pete
4
Oh ok, double-cliquez ... j'ai compris
Pete
7
Second Command fonctionnait pour moi sur Windows 7, cependant, je devais exécuter CMD en tant qu'administrateur.
The Humble Rat
46

Lorsque j'ai essayé les autres solutions, j'ai eu cette erreur:

Registry editing has been disabled by your administrator.

Phooey à ça, je dis!

J'ai rassemblé les scripts PowerShell ci-dessous pour exporter et importer les paramètres PuTTY. Le fichier exporté est un fichier Windows .reg et sera importé proprement si vous en avez l'autorisation, sinon utilisez import.ps1 pour le charger.

Avertissement : jouer avec le registre comme celui-ci est une mauvaise idée ™, et je ne sais pas vraiment ce que je fais. Utilisez les scripts ci-dessous à vos risques et périls et préparez-vous à ce que votre service informatique recrée l'image de votre machine et vous pose des questions gênantes sur ce que vous faisiez.

Sur la machine source:

.\export.ps1

Sur la machine cible:

.\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"

Toutes mes excuses pour le code non idiomatique, je ne connais pas très bien Powershell. Les améliorations sont les bienvenues!

dwurf
la source
3
Fonctionné parfaitement, quel gain de temps. Un ajout ... J'ai dû suivre les instructions ici pour configurer les autorisations: stackoverflow.com/questions/4037939/… .
Jacob Zwiers
1
Ce fut une grande aide! J'avais différents emplacements de registre, je devais juste modifier le chemin dans les deux et c'était tout :)
SidJ
Attendez, donc PowerShell contourne la stratégie de groupe? Je me demande combien de temps jusqu'à ce que cela soit corrigé.
Quolonel Questions
Pas sûr, mais nous sommes à quatre ans et ça compte;)
dwurf
J'ai essayé de ne pas travailler pour moi.
Velmurugan
44
  1. Lancez Run, puis tapez dans la fenêtre déroulante Ouvrir: regedit

  2. Accédez à, comme dans l'Explorateur de fenêtres:
    HKEY_CURRENT_USER \ Software \ SimonTatham

  3. Cliquez avec le bouton droit sur la clé 'SimonTatham' (icône de répertoire), sélectionnez Exporter
    Donnez un nom au fichier (par exemple) putty.reg et enregistrez-le à votre emplacement pour une
    utilisation ultérieure.
  4. Fermez l'Éditeur du Registre.

Terminé.

Sireesh Yarlagadda
la source
34

Si vous souhaitez importer des paramètres sur PuTTY PortableVous pouvez utiliser le putty.regfichier.

Mettez-le simplement sur ce chemin [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. Le programme l'importera

bumerang
la source
23

Pour ceux d'entre vous qui ont besoin d'importer Putty à partir d'un fichier de registre hors ligne, par exemple lorsque vous effectuez une récupération à partir d'un système en panne ou que vous passez simplement à une nouvelle machine et récupérez des données sur cet ancien lecteur, il existe une autre solution qui mérite d'être mentionnée:

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

Cette application console géniale et gratuite exportera l'intégralité du registre ou seulement une clé de registre spécifique. Dans mon cas, j'ai simplement copié le fichier de registre d'un ancien lecteur dans le même répertoire que l'outil d'exportation, puis j'ai utilisé la commande et la syntaxe suivantes dans la fenêtre CMD exécutée en tant qu'administrateur:

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

Après avoir importé le fichier .reg et démarré Putty, tout était là. Simple et efficace.

monsune
la source
2
Cette réponse est suffisamment étroite pour être utilisée dans une question distincte pour une récupération hors ligne. Merci.
Frank Phillips
4
J'ajouterais une note que le NTUSER.DAT se trouve dans Utilisateurs / [Nom d'utilisateur] en tant que fichier système protégé, et non dans Windows / SYSTEM32 / Config.
Frank Phillips
13

Pour ceux qui ne veulent pas jouer avec le registre, une variante de mastic qui enregistre dans un fichier a été créée. Il se trouve ici: http://jakub.kotrla.net/putty/

Ce serait bien que l'équipe de mastic prenne cela comme une option dans la distribution principale.

Jason K.
la source
13

C'était tellement plus facile d'importer l'exportation du registre que ce qui est indiqué ci-dessus. + Simplement:

  1. clic droit sur le fichier et
  2. sélectionnez "Fusionner"

A travaillé comme un champion sur Win 7 Pro.

MecGoingDeaf
la source
2
A travaillé pour moi sur Windows 10 également
Jan
3
Je peux confirmer - cela fonctionne parfaitement sur Win10. "Importation" la plus simple jamais réalisée. Merci!
d-wade
10

Exemple:
Comment transférer la configuration de mastic et la configuration de session d'un compte d'utilisateur à un autre, par exemple lors de la création d'un nouveau compte et que vous souhaitez utiliser les sessions / configurations de mastic de l'ancien compte

Processus:
- Exporter la clé de registre de l'ancien compte dans un fichier
- Importer la clé de registre du fichier dans le nouveau compte

Exporter la clé d'enregistrement: (à partir de l'ancien compte)

  1. Connectez-vous au vieux compte, par exemple Tomold
  2. Ouvrez l'invite de commande normale (PAS admin!)
  3. Tapez «regedit»
  4. Accédez à la section du registre où la configuration est stockée, par exemple [HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham] et cliquez dessus
  5. Sélectionnez 'Exporter' dans le menu Fichier ou cliquez avec le bouton droit de la souris (radio ctrl 'branche sélectionnée')
  6. Enregistrez dans le fichier et nommez-le par exemple 'puttyconfig.reg'
  7. Déconnectez-vous à nouveau

Importer la clé d'enregistrement: (dans un nouveau compte)

  1. Connectez-vous à un nouveau compte, par exemple Tom

  2. Ouvrez l'invite de commande normale (PAS admin!)

  3. Tapez «regedit»

  4. Sélectionnez «Importer» dans le menu

  5. Sélectionnez le fichier de registre à importer, par exemple 'puttyconfig.reg'

  6. Terminé

Remarque:
N'utilisez pas une «invite de commande admin» car les paramètres se trouvent sous «[HKEY_CURRENT_USER ...]» et regedit s'exécuterait en tant qu'administrateur et afficherait cette section pour l'administrateur-utilisateur plutôt que pour l'utilisateur à transférer depuis et / ou à.

Mungo
la source
9

Une amélioration de la solution de bumerang pour importer des données PuTTY portable.

putty.regDéplacer simplement l'exportation (avec la solution m0nhawk) vers PuTTYPortable\Data\settings\n'a pas fonctionné. PuTTY Portable sauvegarde le fichier et en crée un nouveau vide.

Pour contourner ce problème, fusionnez les deux en putty.regcopiant manuellement la configuration que vous souhaitez migrer de votre fichier exporté putty.regvers la ligne nouvellement créée PuTTYPortable\Data\settings\putty.regci-dessous.

REGEDIT4

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

La réponse publiée par @ m0nhawk ne semble pas fonctionner lorsque je teste sur une machine Windows 7. Au lieu de cela, l'utilisation des scripts suivants exporterait / importerait les paramètres de mastic:

::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
Miaou
la source
7

La réponse de m0nhawk n'a pas fonctionné pour moi sur Windows 10 - elle nécessitait une invite de commande élevée et refusait d'émettre un fichier.

Cela a fonctionné et n'a pas nécessité d'élévation:

reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY putty.reg
décret
la source
6

En utilisant cette méthode, il est également possible d'effectuer des modifications de configuration de masse, telles que la modification de la police de toutes les sessions.

  1. Exporter vers .reg
  2. Effectuer une recherche et remplacer par-dessus .reg
  3. Supprimer toutes les sessions
  4. Importez le nouveau .reg

Extrait d'ici: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html

YumUrli
la source
3

Il existe un script PowerShell sur ratil.life/first-useful-powershell-script-putty-to-ssh-config qui peut convertir les sessions dans un format utilisable dans .ssh/config. Il peut également être trouvé sur GitHub .

Cet extrait contient les entrailles principales du code et imprimera la configuration résultante directement sur 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 }
    }

}
mwfearnley
la source
2

Si vous, comme moi, avez installé de nouveaux Windows et seulement après vous être souvenu des sessions de mastic, vous pouvez toujours les importer, si vous avez un ancien disque dur Windows ou au moins votre ancien répertoire "home" sauvegardé ( C:\Users\<user_name>).

Dans ce répertoire, il devrait y avoir un NTUSER.DATfichier. Il est masqué par défaut, vous devez donc activer les fichiers cachés dans votre explorateur Windows ou utiliser un autre navigateur de fichiers. Ce fichier contient la HKEY_CURRENT_USERbranche de votre ancien registre Windows.

Pour l'utiliser, vous devez ouvrir regeditsur votre nouveau Windows et sélectionner la HKEY_USERSclé.

Sélectionnez ensuite File-> Load Hive...et recherchez votre ancien répertoire "home" de votre ancienne installation Windows. Dans ce répertoire, il devrait y avoir un NTUSER.DATfichier. Il est caché par défaut, donc, si vous n'avez pas permis d'afficher les fichiers cachés dans les propriétés de votre explorateur Windows, vous pouvez simplement saisir manuellement le nom du fichier dans la zone de File namesaisie de la boîte de dialogue "Charger la ruche" et appuyer sur Enter. Ensuite, dans la fenêtre de dialogue suivante, entrez un nom de clé pour y charger l'ancien registre. par exemple tmp.

La HKEY_CURRENT_USERbranche de votre ancien registre devrait maintenant être accessible sous la HKEY_USERS\tmpbranche de votre registre actuel.

Maintenant, exportez la HKEY_USERS\tmp\Software\SimonTathambranche dans un putty.regfichier, ouvrez ce fichier dans votre éditeur de texte préféré et recherchez et remplacez toutes les HKEY_USERS\tmpchaînes par HKEY_CURRENT_USER. Enregistrez maintenant le .regfichier.

Vous pouvez maintenant importer ce fichier dans votre registre Windows actuel en double-cliquant dessus. Voir la réponse de m0nhawk comment procéder.

À la fin, sélectionnez la HKEY_USERS\tmpbranche dans l'éditeur de registre, puis sélectionnez File-> Unload Hive...et confirmez cette opération.

Ruslan Stelmachenko
la source