Wie exportiere / importiere ich eine PuTTy-Sitzungsliste?

678

Gibt es eine Möglichkeit, dies zu tun?

Oder muss ich jeden Datensatz manuell aus der Registrierung übernehmen?

s.webbandit
quelle

Antworten:

1238

Export

cmd.exe, erfordern erhöhte Eingabeaufforderung:

Nur Sitzungen:

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

Alle Einstellungen:

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

Power Shell:

Nur Sitzungen:

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

Alle Einstellungen:

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

Importieren

Doppelklicken Sie auf die *.regDatei und akzeptieren Sie den Import.

Alternative Wege:

cmd.exe, erfordern erhöhte Eingabeaufforderung:

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

Power Shell:

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

Hinweis : Nicht durch SimonTatham Ihren Benutzernamen ersetzen .

Hinweis : Es wird eine regDatei auf dem Desktop des aktuellen Benutzers erstellt.

Hinweis : Es werden keine verwandten SSH-Schlüssel exportiert.

m0nhawk
quelle
3
@NamGVU Das liegt daran, dass der Pfad einen Ordner mit Leerzeichen hat. Gehen Sie zu einem, der es nicht hatte.
m0nhawk
3
@NamGVU Ersetzen Sie% userprofile% nicht durch Ihren Benutzernamen, sondern lassen Sie ihn unverändert.
Asrar
4
Wie importiert man es in einen anderen Kitt auf einem anderen Computer?
Pete
4
Oh ok, Doppelklick ... verstanden
Pete
7
Der zweite Befehl funktionierte für mich unter Windows 7, ich musste jedoch CMD als Administrator ausführen.
Die bescheidene Ratte
46

Als ich die anderen Lösungen ausprobierte, bekam ich diesen Fehler:

Registry editing has been disabled by your administrator.

Phooey dazu, sage ich!

Ich habe die folgenden Powershell-Skripte zum Exportieren und Importieren von PuTTY-Einstellungen zusammengestellt. Die exportierte Datei ist eine Windows-REG-Datei und wird sauber importiert, wenn Sie über die Berechtigung verfügen. Andernfalls laden Sie sie mit import.ps1.

Warnung : Es ist eine schlechte Idee, mit der Registrierung wie dieser herumzuspielen, und ich weiß nicht wirklich, was ich tue. Verwenden Sie die folgenden Skripte auf eigenes Risiko. Lassen Sie sich von Ihrer IT-Abteilung ein neues Image Ihres Computers erstellen und stellen Sie unangenehme Fragen zu Ihren Aktivitäten.

Auf dem Quellcomputer:

.\export.ps1

Auf dem Zielcomputer:

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

Entschuldigung für den nicht-idiomatischen Code, ich bin mit Powershell nicht sehr vertraut. Verbesserungen sind willkommen!

dwurf
quelle
3
Hat perfekt funktioniert, was für eine Zeitersparnis. Ein Zusatz ... Ich musste den Anweisungen hier folgen, um Berechtigungen einzurichten : stackoverflow.com/questions/4037939/… .
Jacob Zwiers
1
Das war eine große Hilfe! Ich hatte verschiedene Registrierungsorte, musste nur den Pfad in beiden bearbeiten und das
wars
Warten Sie, damit PowerShell die Gruppenrichtlinien umgeht. Ich frage mich, wie lange es dauert, bis das gepatcht ist.
Quolonel Fragen
Ich bin mir nicht sicher, aber wir sind bei vier Jahren und zählen;)
dwurf
Ich habe versucht, nicht für mich zu arbeiten.
Velmurugan
44
  1. Starten Sie Run und geben Sie im Dropdown-Fenster Öffnen Folgendes ein: regedit

  2. Navigieren Sie wie im Explorer von
    Windows zu : HKEY_CURRENT_USER \ Software \ SimonTatham

  3. Klicken Sie mit der rechten Maustaste auf die Taste 'SimonTatham' (Verzeichnissymbol), wählen Sie Exportieren.
    Geben Sie der Datei einen Namen (z. B.) putty.reg und speichern Sie sie zur
    späteren Verwendung an Ihrem Speicherort .
  4. Schließen Sie den Registrierungseditor.

Erledigt.

Sireesh Yarlagadda
quelle
34

Wenn Sie Einstellungen importieren möchten, können PuTTY PortableSie die putty.regDatei verwenden.

Setzen Sie es einfach auf diesen Weg [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. Das Programm wird es importieren

Bumerang
quelle
23

Für diejenigen unter Ihnen, die Putty aus einer Offline-Registrierungsdatei importieren müssen, z. B. wenn Sie sich von einem abgestürzten System erholen oder einfach auf einen neuen Computer wechseln und Daten von diesem alten Laufwerk abrufen, gibt es eine weitere erwähnenswerte Lösung:

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

Diese großartige und kostenlose Konsolenanwendung exportiert die gesamte Registrierung oder nur einen bestimmten Registrierungsschlüssel. In meinem Fall habe ich einfach die Registrierungsdatei von einem alten Laufwerk in dasselbe Verzeichnis wie das Exporter-Tool kopiert und dann den folgenden Befehl und die folgende Syntax im CMD-Fenster verwendet, das als Administrator ausgeführt wurde:

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

Nach dem Importieren der .reg-Datei und dem Starten von Putty war alles da. Einfach und effizient.

Monsun
quelle
2
Diese Antwort ist eng genug für einen Anwendungsfall, um in eine separate Frage für die Offline-Wiederherstellung aufgenommen zu werden. Vielen Dank.
Frank Phillips
4
Ich möchte einen Hinweis hinzufügen, dass sich NTUSER.DAT in Users / [Benutzername] als geschützte Systemdatei befindet und nicht in Windows / SYSTEM32 / Config.
Frank Phillips
13

Dies war so viel einfacher beim Importieren des Registrierungsexports als oben angegeben. + Einfach:

  1. Klicken Sie mit der rechten Maustaste auf die Datei und
  2. Wählen Sie "Zusammenführen"

Arbeitete wie ein Champion bei Win 7 Pro.

DudeGoingDeaf
quelle
2
Arbeitete für mich auf 10 Fenster auch
Jan
3
Ich kann bestätigen - es funktioniert einwandfrei unter Win10. Einfachster "Import" aller Zeiten. Vielen Dank!
D-Wade
12

Für diejenigen, die sich nicht mit der Registrierung anlegen möchten, wurde eine Variante von Putty erstellt, die in einer Datei gespeichert wird. Es befindet sich hier: http://jakub.kotrla.net/putty/

Es wäre schön, wenn das Kitt-Team dies als Option in die Hauptverteilung aufnehmen würde.

Jason K.
quelle
10

Beispiel:
So übertragen Sie die Kittkonfiguration und Sitzungskonfiguration von einem Benutzerkonto auf ein anderes, z. B. wenn ein neues Konto erstellt wurde und Sie die Kitt-Sitzungen / -Konfigurationen aus dem alten Konto verwenden möchten

Prozess:
- Registrierungsschlüssel aus altem Konto in eine Datei
exportieren - Registrierungsschlüssel aus Datei in neues Konto importieren

Registrierungsschlüssel exportieren: (vom ALTEN Konto)

  1. Loggen Sie sich in das ALTE Konto ein, zB morgen
  2. Öffnen Sie die normale 'Eingabeaufforderung' (NICHT admin!)
  3. Geben Sie 'regedit' ein
  4. Navigieren Sie zum Registrierungsabschnitt, in dem die Konfiguration gespeichert wird, z. B. [HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham], und klicken Sie darauf
  5. Wählen Sie 'Exportieren' aus dem Dateimenü oder klicken Sie mit der rechten Maustaste (Radio-Strg 'Ausgewählter Zweig').
  6. In Datei speichern und benennen, zB 'puttyconfig.reg'
  7. Melden Sie sich erneut ab

Registrierungsschlüssel importieren: (in NEUES Konto)

  1. Loggen Sie sich in ein NEUES Konto ein, zB Tom

  2. Öffnen Sie die normale 'Eingabeaufforderung' (NICHT admin!)

  3. Geben Sie 'regedit' ein

  4. Wählen Sie "Importieren" aus dem Menü

  5. Wählen Sie die zu importierende Registrierungsdatei aus, z. B. 'puttyconfig.reg'.

  6. Erledigt

Hinweis:
Verwenden Sie keine 'admin-Eingabeaufforderung', da sich die Einstellungen unter '[HKEY_CURRENT_USER ...]' befinden und regedit als admin ausgeführt wird und diesen Abschnitt für den admin-Benutzer und nicht für den Benutzer zum Übertragen von und / oder anzeigt zu.

Mungo
quelle
9

Eine Verbesserung der Lösung von Bumerang zum Importieren von Daten in PuTTY portable.

Das putty.regeinfache Verschieben des Exports (mit der m0nhawk-Lösung) nach PuTTYPortable\Data\settings\hat nicht funktioniert. PuTTY Portable sichert die Datei und erstellt eine neue leere.

Um dieses Problem zu putty.regumgehen, führen Sie beide manuell zusammen, indem Sie die Konfiguration, die Sie migrieren möchten, von der exportierten putty.regin die neu erstellte PuTTYPortable\Data\settings\putty.regunten stehende Zeile kopieren .

REGEDIT4

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

Die Antwort von @ m0nhawk scheint beim Testen auf einem Windows 7-Computer nicht zu funktionieren. Stattdessen würden die folgenden Skripte die Einstellungen von Putty exportieren / importieren:

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

Die Antwort von m0nhawk funktionierte unter Windows 10 nicht - sie erforderte eine Eingabeaufforderung mit erhöhten Rechten und weigerte sich, eine Datei auszugeben.

Dies funktionierte und erforderte keine Erhebung:

reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY putty.reg
Fiat
quelle
6

Mit dieser Methode können auch Massenkonfigurationsänderungen vorgenommen werden, z. B. das Ändern der Schriftart für alle Sitzungen.

  1. Export nach .reg
  2. Führen Sie eine Suche durch und ersetzen Sie sie über .reg
  3. Entfernen Sie alle Sitzungen
  4. Importieren Sie die neue .reg

Auszug aus hier: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html

YumUrli
quelle
3

Unter ratil.life/first-useful-powershell-script-putty-to-ssh-config gibt es ein PowerShell-Skript, mit dem die Sitzungen in ein Format konvertiert werden können, in dem sie verwendet werden können .ssh/config. Es kann auch auf GitHub gefunden werden .

Dieser Auszug enthält die wichtigsten Eingeweide des Codes und druckt die resultierende Konfiguration direkt an 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
quelle
2

Wenn Sie wie ich neues Windows installiert haben und erst, nachdem Sie sich an Kitt-Sitzungen erinnert haben, können Sie diese weiterhin importieren, wenn Sie eine alte Windows-Festplatte oder zumindest Ihr altes "Home" -Verzeichnis gesichert haben ( C:\Users\<user_name>).

In diesem Verzeichnis sollte sich eine NTUSER.DATDatei befinden. Es ist standardmäßig ausgeblendet, daher sollten Sie ausgeblendete Dateien in Ihrem Windows Explorer aktivieren oder einen anderen Dateibrowser verwenden. Diese Datei enthält den HKEY_CURRENT_USERZweig Ihrer alten Windows-Registrierung.

Um es zu verwenden, müssen Sie es regeditunter Ihrem neuen Windows öffnen und den HKEY_USERSSchlüssel auswählen .

Wählen Sie dann File-> Load Hive...und suchen Sie Ihr altes "Home" -Verzeichnis Ihrer alten Windows-Installation. In diesem Verzeichnis sollte sich eine NTUSER.DATDatei befinden. Es ist standardmäßig ausgeblendet. Wenn Sie also nicht aktiviert haben, dass ausgeblendete Dateien in Ihren Windows Explorer-Eigenschaften angezeigt werden, können Sie den Dateinamen einfach manuell in das File nameEingabefeld des Dialogfelds "Hive laden" eingeben und drücken Enter. Geben Sie dann im nächsten Dialogfenster einen Schlüsselnamen ein, um die alte Registrierung darin zu laden. zB tmp.

Der HKEY_CURRENT_USERZweig Ihrer alten Registrierung sollte jetzt unter dem HKEY_USERS\tmpZweig Ihrer aktuellen Registrierung zugänglich sein .

Exportieren Sie nun den HKEY_USERS\tmp\Software\SimonTathamZweig in eine putty.regDatei, öffnen Sie diese Datei in Ihrem bevorzugten Texteditor und suchen und ersetzen Sie alle HKEY_USERS\tmpZeichenfolgen durch HKEY_CURRENT_USER. Speichern Sie nun die .regDatei.

Sie können diese Datei jetzt in Ihre aktuelle Windows-Registrierung importieren, indem Sie darauf doppelklicken. Siehe m0nhawks Antwort, wie das geht.

Wählen Sie am Ende HKEY_USERS\tmpim Registrierungseditor einen Zweig aus und wählen Sie dann File-> Unload Hive...und bestätigen Sie diesen Vorgang.

Ruslan Stelmachenko
quelle