web-dev-qa-db-fr.com

Comment exporter / importer la liste des sessions PuTTY?

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

Ou je dois prendre manuellement chaque enregistrement du registre?

620
s.webbandit

Exportation

cmd.exe, nécessite 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 fichier *.reg et acceptez l’importation.

Manières alternatives:

cmd.exe, nécessite 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 pas remplacerSimonTatham avec votre nom d'utilisateur.

Remarque : Un fichier reg sera créé sur le bureau de l'utilisateur actuel.

Remarque : Cela va pas exporter les clés SSH associées.

1134
m0nhawk

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

Registry editing has been disabled by your administrator.

Phooey à ça, dis-je!

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

Attention: Jouer avec le registre est une mauvaise idée, et je ne sais pas trop ce que je fais. Utilisez les scripts ci-dessous à vos risques et périls et soyez prêt à demander à votre service informatique de re-imaginer votre machine et de vous poser des questions inconfortables 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!

40
dwurf
  1. Lancer Exécuter, puis taper dans la liste déroulante Ouvrir: regedit

  2. Accédez à, tout comme dans l'explorateur de Windows:
    HKEY_CURRENT_USER\Software\SimonTatham

  3. Faites un clic droit sur la touche 'SimonTatham' (icône du répertoire), sélectionnez Exporter
    Donnez un nom au fichier (par exemple) PuTTY.reg et enregistrez-le à votre emplacement pour
    utiliser plus tard.
  4. Fermez l'éditeur de registre.

Terminé.

38

Si vous souhaitez importer les paramètres sur PuTTY Portable Vous pouvez utiliser le fichier PuTTY.reg.

Il suffit de le mettre sur ce chemin [path_to_Your_portable_apps]PuTTYPortable\Data\settings\PuTTY.reg. Le programme l'importera

34
bumerang

Pour ceux d'entre vous qui ont besoin d'importer PuTTY à partir d'un fichier de registre hors ligne, par exemple. Lorsque vous récupérez un système en panne ou que vous passez simplement à une nouvelle machine et récupérez des données sur cet ancien disque, il existe une solution supplémentaire 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’ensemble 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 y était. Simple et efficace.

20
monsune

Ce fut tellement plus facile d'importer l'exportation de registre que ce qui est indiqué ci-dessus. + Simplement:

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

Travaillé comme un champion sur Win 7 Pro.

13
DudeGoingDeaf

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

Ce serait bien si l'équipe PuTTY prenait cela comme une option dans la distribution principale.

12
Jason K.

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

Process:
- Exporter la clé de registre d'un ancien compte dans un fichier
- Importer la clé de registre du fichier dans un nouveau compte

Export reg key: (à partir d'un ancien compte)

  1. Connectez-vous au compte OLD, par exemple. plier
  2. Ouvrez l'invite de commande normale (PAS admin!)
  3. Tapez 'regedit'
  4. Accédez à la section de 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. Se déconnecter à nouveau

Import reg clé: (dans un nouveau compte)

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

  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é

Note:
N'utilisez pas une "invite de commande admin" car les paramètres sont situés sous "[HKEY_CURRENT_USER ...]" et regedit s'exécuterait en tant qu'administrateur et afficherait cette section pour l'utilisateur admin plutôt que pour que l'utilisateur le transfère. et/ou à.

9
Mungo

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

Déplacer simplement PuTTY.reg exporté (avec la solution m0nhawk) vers PuTTYPortable\Data\settings\ ne fonctionnait pas. PuTTY Portable sauvegarde le fichier et en crée un nouveau.

Pour résoudre ce problème, fusionnez PuTTY.reg en copiant manuellement la configuration que vous souhaitez migrer de votre PuTTY.reg exporté vers le PuTTYPortable\Data\settings\PuTTY.reg nouvellement créé en dessous des lignes suivantes.

REGEDIT4

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

La réponse publiée par @ m0nhawk ne semble pas fonctionner car je teste sur une machine Windows 7. À la place, l’utilisation des scripts suivants exporterait/importerait les paramètres de 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
Meow

la réponse de m0nhawk ne fonctionnait pas pour moi sous Windows 10 - elle nécessitait une invite élevée de commande et refusait d'émettre un fichier.

Cela a fonctionné et n'a pas besoin d'altitude:

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

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

  1. Exporter vers .reg
  2. Effectuer une recherche et remplacer sur .reg
  3. Supprimer toutes les sessions
  4. Importer le nouveau .reg

Extrait de ici: http://www.sysadmit.com/2015/11/PuTTY-exportar-configuracion.html

6
YumUrli

Il existe un script PowerShell à ratil.life/first-useful-powershell-script-PuTTY-to-ssh-config qui peut convertir les sessions en un format utilisable dans .ssh/config . On peut aussi le trouver 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 }
    }

}
3
mwfearnley

J'utilise gestionnaire de connexion PuTTY où vous créez une base de données de sessions. Il est facile de copier et d'importer cette base de données sur d'autres ordinateurs.

Voir ceci guide pratique

3
jasonoriordan