Hoe kan ik de PuTTY-sessielijst exporteren/importeren?

Is er een manier om dit te doen?

Of moet ik elk record handmatig uit het register halen?


Antwoord 1, autoriteit 100%

Exporteren

cmd.exe, vereisteverhoogde prompt:

Alleen sessies:

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

Alle instellingen:

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

Powershell:

Alleen sessies:

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

Alle instellingen:

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

Importeren

Dubbelklik op het bestand *.regen accepteer de import.

Alternatieve manieren:

cmd.exe, vereisenverhoogde opdrachtprompt:

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

PowerShell:

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

Opmerking: vervangSimonTathamniet door uw gebruikersnaam.

Opmerking: er wordt een reg-bestand gemaakt op het bureaublad van de huidige gebruiker.

Opmerking: geengerelateerde SSH-sleutels worden geëxporteerd.


Antwoord 2, autoriteit 4%

Toen ik de andere oplossingen probeerde, kreeg ik deze foutmelding:

Registry editing has been disabled by your administrator.

Phoef dat zeg ik!

Ik heb de onderstaande powershell-scripts samengesteld voor het exporteren en importeren van PuTTY-instellingen. Het geëxporteerde bestand is een Windows .reg-bestand en wordt netjes geïmporteerd als je toestemming hebt, gebruik anders import.ps1 om het te laden.

Waarschuwing: zo met het register knoeien is een slecht idee™, en ik weet niet echt wat ik doe. Gebruik de onderstaande scripts op eigen risico en wees erop voorbereid dat uw IT-afdeling een nieuw image van uw machine kan maken en u ongemakkelijke vragen kan stellen over wat u aan het doen was.

Op de bronmachine:

.\export.ps1

Op de doelcomputer:

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

Excuses voor de niet-idiomatische code, ik ben niet erg bekend met Powershell. Verbeteringen zijn welkom!


Antwoord 3, autoriteit 4%

  1. Lancering,
    typ vervolgens in het vervolgkeuzevenster Openen: regedit

  2. Navigeer naar, net als in Windows Verkenner:
    HKEY_CURRENT_USER\Software\SimonTatham

  3. Klik met de rechtermuisknop op de ‘SimonTatham’-toets (mappictogram), selecteer Exporteren
    Geef het bestand een naam (zeg) putty.reg en sla het op uw locatie op voor
    later gebruik.
  4. Sluit Register-editor.

Gereed.


Antwoord 4, autoriteit 3%

Als u instellingen op PuTTY Portablewilt importeren, kunt u het bestand putty.reggebruiken.

Zet het gewoon op dit pad [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. Programma zal het importeren


Antwoord 5, autoriteit 2%

Voor degenen onder u die Putty moeten importeren uit een offline registerbestand, b.v. wanneer u herstelt van een gecrasht systeem of gewoon naar een nieuwe machine verhuist en gegevens van die oude schijf haalt, is er nog een oplossing die het vermelden waard is:

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

Deze geweldige en gratis consoletoepassing exporteert het hele register of alleen een specifieke registersleutel. In mijn geval heb ik gewoon het registerbestand van een oude schijf naar dezelfde map gekopieerd als de exporttool en vervolgens heb ik de volgende opdracht en syntaxis in het CMD-venster gebruikt als beheerder:

RegFileExport.exe NTUSER.DAT putty.reg “HKEY_CURRENT_USER\Software\SimonTatham”

Na het importeren van het .reg-bestand en het starten van Putty was alles aanwezig. Eenvoudig en efficiënt.


Antwoord 6

Voor degenen die niet met het register willen knoeien, is er een variant van putty gemaakt die in een bestand kan worden opgeslagen. Het bevindt zich hier: http://jakub.kotrla.net/putty/

Het zou mooi zijn als het putty-team dit als optie in de hoofddistributie zou opnemen.


Antwoord 7

Dit was zoveel gemakkelijker bij het importeren van de register-export dan hierboven vermeld.
+
Gewoon:

  1. klik met de rechtermuisknop op het bestand en
  2. selecteer “Samenvoegen”

Werkte als een kampioen aan Win 7 Pro.


Antwoord 8

m0nhawk’s antwoord werkte niet voor mij op Windows 10 – het vereiste een verhoogde opdrachtprompt en weigerde een bestand uit te zenden.

Dit werkte en vereiste geen verhoging:

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

Antwoord 9

Voorbeeld:
Hoe u putty-configuratie- en sessieconfiguratie van de ene gebruikersaccount naar een andere b.v. Wanneer een nieuw account is gemaakt en de putty-sessies / configuraties van het oude account

gebruiken

proces:
– Exporteer registersleutel van Old-account naar een bestand
– Importeer de registersleutel uit het bestand naar een nieuw account

Export REG-toets: (van Old Account)

  1. Inloggen in het oude account b.v. tomold
  2. Normale ‘opdrachtprompt’ (niet admin!)
  3. Type ‘Regedit’
  4. Navigeer naar registersectie waar de configuratie wordt opgeslagen, b.v. [HKEY_CURRENT_USER \ SOFTWARE \ SIMONTATHAM] en klik erop
  5. Selecteer ‘Export’ in het menu Bestand of met de rechtermuisknop (Radio Ctrl ‘geselecteerde branch’)
  6. opslaan in bestand en noem het b.v. ‘puttyconfig.reg’
  7. logout opnieuw

Import REG-toets: (naar nieuwe account)

  1. Inloggen in nieuwe account, b.v. Tom

  2. Open Normale ‘opdrachtprompt’ (niet admin!)

  3. Type ‘Regedit’

  4. Selecteer ‘Import’ in het menu

  5. Selecteer het registerbestand om b.v. ‘puttyconfig.reg’

  6. Gereed

Opmerking:
Gebruik geen ‘Admin-opdrachtprompt’ omdat instellingen zich bevinden onder ‘[HKEY_CURRENT_USER …]’ en Regedit zou als beheerder worden uitgevoerd en laat zien dat de sectie voor de admin-gebruiker eerder voor de gebruiker is om van en / of naar.


Antwoord 10

Een verbetering van de oplossing van Bumerang om gegevens te importeren naar PuTTY portable.

Gewoon de geëxporteerde putty.reg(met m0nhawk-oplossing) verplaatsen naar PuTTYPortable\Data\settings\werkte niet. PuTTY Portable maakt een back-up van het bestand en maakt een nieuw leeg bestand.

Om dit probleem te omzeilen, voegt u beide putty.regsamen en kopieert u handmatig de configuratie die u wilt migreren van uw geëxporteerde putty.regnaar de nieuw gemaakte PuTTYPortable\Data\settings\putty.reghieronder volgende regels.

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

Antwoord 11

Het antwoord van @m0nhawk lijkt niet te werken terwijl ik test op een Windows 7-machine.
In plaats daarvan zou het gebruik van de volgende scripts de instellingen van putty exporteren/importeren:

::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

Antwoord 12

Met deze methode is het ook mogelijk om massale configuratiewijzigingen uit te voeren, zoals het wijzigen van het lettertype voor alle sessies.

  1. Exporteren naar .reg
  2. Voer een zoekopdracht uit en vervang over .reg
  3. Alle sessies verwijderen
  4. Importeer de nieuwe .reg

Van hier geëxtraheerd: http://www.sysadmit.com/ 2015/11/putty-exportar-configuracion.html


Antwoord 13

Als je, net als ik, nieuwe Windows hebt geïnstalleerd en pas nadatje je de putty-sessies herinnert, kun je ze nog steeds importeren, als je een oude Windows-harde schijf hebt of in ieder geval je oude “home”-directory back-up gemaakt (C:\Users\<user_name>).

In deze map moet het bestand NTUSER.DATstaan. Het is standaard verborgen, dus u moet verborgen bestanden inschakelen in uw Windows Verkenner of een andere bestandsbrowser gebruiken. Dit bestand bevat de vertakking HKEY_CURRENT_USERvan uw oude Windows-register.

Om het te gebruiken, moet u regeditopenen op uw nieuwe Windows en HKEY_USERS-sleutel selecteren.

Selecteer vervolgens File-> Load Hive...en zoek je oude “home”-directory van je oude Windows-installatie. In deze map zou het bestand NTUSER.DATmoeten staan. Het is standaard verborgen, dus als u verborgen bestanden niet hebt ingeschakeld in de eigenschappen van uw Windows Verkenner, kunt u de bestandsnaam gewoon handmatig invoeren in het invoervak File namevan het dialoogvenster “Hive laden” en druk op Enter. Voer vervolgens in het volgende dialoogvenster een sleutelnaam in om het oude register erin te laden. bijv. tmp.

De HKEY_CURRENT_USERbranch van uw oude register zou nu toegankelijk moeten zijn onder de HKEY_USERS\tmpbranch van uw huidige register.

Exporteer nu de tak HKEY_USERS\tmp\Software\SimonTathamnaar het bestand putty.reg, open dit bestand in uw favoriete teksteditor en zoek en vervang alle HKEY_USERS\tmptekenreeks met HKEY_CURRENT_USER. Sla nu het bestand .regop.

U kunt dit bestand nu in uw huidige Windows-register importeren door erop te dubbelklikken. Bekijk het antwoord van m0nhawkhoe je dit doet.

Selecteer uiteindelijk HKEY_USERS\tmpbranch in de register-editor en selecteer vervolgens File-> Unload Hive...en bevestig deze handeling.


Antwoord 14

Er is een PowerShell-script op ratil.life/ first-useful-powershell-script-putty-to-ssh-configdie de sessies kan converteren naar een formaat dat kan worden gebruikt in .ssh/config. Het is ook te vinden op GitHub.

Dit fragment bevat de kern van de code en zal de resulterende configuratie rechtstreeks naar stdout afdrukken:

# 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 }
    }
}

Antwoord 15

Ik gebruik Putty Connection Manager waar u een database van sessies maakt. Het is gemakkelijk om die database te kopiëren en importeren naar andere computers.

Zie deze Handige gids

Other episodes