¿Cómo exportar / importar la lista de sesiones PuTTy?

678

¿Hay alguna forma de hacer esto?

¿O tengo que tomar manualmente todos los registros del Registro?

s.webbandit
fuente

Respuestas:

1238

Exportar

cmd.exe, requieren un aviso elevado:

Solo sesiones:

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

Todos los ajustes:

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

Potencia Shell:

Solo sesiones:

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

Todos los ajustes:

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

Importar

Haga doble clic en el *.regarchivo y acepte la importación.

Formas alternativas:

cmd.exe, requiere símbolo del sistema elevado:

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

Potencia Shell:

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

Nota : no reemplace SimonTatham con su nombre de usuario.

Nota : creará un regarchivo en el escritorio del usuario actual.

Nota : Se no exportar claves SSH relacionados.

m0nhawk
fuente
3
@NamGVU Eso es porque la ruta tiene una carpeta con espacios. Pasar a uno que no lo tenía.
m0nhawk
3
@NamGVU No reemplace% userprofile% con su nombre de usuario, déjelo como está.
Asrar
44
¿Cómo se importa a una masilla diferente en una máquina diferente?
Pete
44
Oh ok, haz doble clic ... lo tengo
Pete
77
Second Command funcionó para mí en Windows 7, sin embargo, necesitaba ejecutar CMD como administrador.
The Humble Rat
46

Cuando probé las otras soluciones, recibí este error:

Registry editing has been disabled by your administrator.

Phooey a eso, digo!

Reuní los siguientes scripts de PowerShell para exportar e importar configuraciones PuTTY. El archivo exportado es un archivo .reg de Windows y se importará limpiamente si tiene permiso; de lo contrario, use import.ps1 para cargarlo.

Advertencia : jugar con el registro de esta manera es una Mala Idea ™, y realmente no sé lo que estoy haciendo. Utilice los siguientes scripts bajo su propio riesgo y prepárese para que su departamento de TI vuelva a crear imágenes de su máquina y le haga preguntas incómodas sobre lo que estaba haciendo.

En la máquina fuente:

.\export.ps1

En la máquina de destino:

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

Disculpas por el código no idiomático, no estoy muy familiarizado con Powershell. ¡Las mejoras son bienvenidas!

dwurf
fuente
3
Funcionó perfectamente, qué ahorro de tiempo. Una adición ... Tuve que seguir las instrucciones aquí para configurar los permisos: stackoverflow.com/questions/4037939/… .
Jacob Zwiers
1
¡Eso fue de gran ayuda! Tenía diferentes ubicaciones de registro, solo tenía que editar la ruta en ambos y eso fue todo :)
SidJ
Espera, ¿entonces PowerShell evita la política de grupo? Me pregunto cuánto tiempo hasta que eso se repare.
Preguntas de Quolonel
No estoy seguro, pero estamos en cuatro años y contando;)
dwurf
Intenté no funcionar para mí.
Velmurugan
44
  1. Ejecute Ejecutar, luego escriba la ventana desplegable Abrir: regedit

  2. Navegue hasta, al igual que en el Explorador de Windows:
    HKEY_CURRENT_USER \ Software \ SimonTatham

  3. Haga clic derecho en la tecla 'SimonTatham' (icono de directorio), seleccione Exportar.
    Dé un nombre al archivo (por ejemplo) putty.reg y guárdelo en su ubicación para
    su uso posterior.
  4. Cerrar el Editor del Registro.

Hecho.

Sireesh Yarlagadda
fuente
34

Si desea importar la configuración, PuTTY Portablepuede usar el putty.regarchivo.

Solo ponlo en este camino [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. El programa lo importará

bumerang
fuente
23

Para aquellos de ustedes que necesitan importar Putty desde un archivo de registro fuera de línea, por ejemplo, cuando se están recuperando de un sistema bloqueado o simplemente se están mudando a una nueva máquina y tomando datos de esa unidad anterior, hay una solución más que vale la pena mencionar:

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

Esta excelente y gratuita aplicación de consola exportará todo el registro o solo una clave de registro específica. En mi caso, simplemente copié el archivo de registro de una unidad anterior en el mismo directorio que la herramienta de exportación y luego utilicé el siguiente comando y sintaxis en la ventana CMD ejecutada como administrador:

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

Después de importar el archivo .reg e iniciar Putty, todo estaba allí. Simple y eficiente.

monsune
fuente
2
Esta respuesta es un caso de uso lo suficientemente limitado como para incluirse en una pregunta separada para la recuperación fuera de línea. Gracias.
Frank Phillips
44
Agregaría una nota de que NTUSER.DAT se encuentra en Usuarios / [Nombre de usuario] como un archivo de sistema protegido, y no en Windows / SYSTEM32 / Config.
Frank Phillips
13

Para aquellos que no quieren meterse con el registro, se ha creado una variación de masilla que se guarda en el archivo. Se encuentra aquí: http://jakub.kotrla.net/putty/

Sería bueno que el equipo de masilla tomara esto como una opción en la distribución principal.

Jason K.
fuente
13

Importar la exportación del registro fue mucho más fácil de lo que se indicó anteriormente. + Simplemente:

  1. haga clic derecho en el archivo y
  2. seleccione "Fusionar"

Trabajó como un campeón en Win 7 Pro.

DudeGoingDeaf
fuente
2
También funcionó para mí en Windows 10
Jan
3
Puedo confirmarlo: funciona perfectamente en Win10. La "importación" más fácil de la historia. ¡Gracias!
d-wade
10

Ejemplo:
Cómo transferir la configuración de masilla y la configuración de sesión de una cuenta de usuario a otra, por ejemplo, cuando se crea una nueva cuenta y desea utilizar las sesiones / configuraciones de masilla de la cuenta anterior

Proceso:
- Exportar clave de registro de la cuenta anterior a un archivo
- Importar clave de registro del archivo a la cuenta nueva

Exportar clave de registro: (desde una cuenta ANTIGUA)

  1. Inicie sesión en la cuenta OLD, por ejemplo, tomold
  2. Abra el 'símbolo del sistema' normal (¡NO administrador!)
  3. Escriba 'regedit'
  4. Navegue a la sección de registro donde se almacena la configuración, por ejemplo, [HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham] y haga clic en ella
  5. Seleccione 'Exportar' del menú de archivos o haga clic con el botón derecho del mouse (radio ctrl 'rama seleccionada')
  6. Guardar en el archivo y nombrarlo, por ejemplo, 'puttyconfig.reg'
  7. Cerrar sesión nuevamente

Importar clave de registro: (en NUEVA cuenta)

  1. Inicie sesión en una cuenta NUEVA, por ejemplo, tom

  2. Abra el 'símbolo del sistema' normal (¡NO administrador!)

  3. Escriba 'regedit'

  4. Seleccione 'Importar' del menú

  5. Seleccione el archivo de registro para importar, por ejemplo, 'puttyconfig.reg'

  6. Hecho

Nota:
No utilice un 'símbolo del sistema de administrador' ya que la configuración se encuentra en '[HKEY_CURRENT_USER ...]' y regedit se ejecutará como administrador y mostrará esa sección para el usuario administrador en lugar de para que el usuario transfiera y / o a.

Mungo
fuente
9

Una mejora a la solución de bumerang para importar datos PuTTY portable.

Simplemente mover exportado putty.reg(con la solución m0nhawk) a PuTTYPortable\Data\settings\no funcionó. PuTTY Portable realiza una copia de seguridad del archivo y crea uno nuevo vacío.

Para solucionar este problema, combine ambas putty.regcopias copiando manualmente la configuración que desea migrar desde putty.reglas PuTTYPortable\Data\settings\putty.reglíneas siguientes a las recién creadas a continuación.

REGEDIT4

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

La respuesta publicada por @ m0nhawk no parece funcionar mientras pruebo en una máquina con Windows 7. En cambio, el uso de los siguientes scripts exportaría / importaría la configuración de masilla:

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

La respuesta de m0nhawk no funcionó para mí en Windows 10: requería un símbolo del sistema elevado y se negaba a emitir un archivo.

Esto funcionó y no requirió elevación:

reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY putty.reg
fíat
fuente
3

Hay un script de PowerShell en ratil.life/first-useful-powershell-script-putty-to-ssh-config que puede convertir las sesiones a un formato que pueda usarse .ssh/config. También se puede encontrar en GitHub .

Este extracto contiene las entrañas principales del código e imprimirá la configuración resultante directamente en 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
fuente
2

Si usted, como yo, instaló Windows nuevo y solo después de recordar las sesiones de masilla, aún puede importarlas, si tiene un disco duro antiguo de Windows o al menos su antiguo directorio "principal" respaldado ( C:\Users\<user_name>).

En este directorio debe haber un NTUSER.DATarchivo. Está oculto de forma predeterminada, por lo que debe habilitar los archivos ocultos en su explorador de Windows o usar otro explorador de archivos. Este archivo contiene la HKEY_CURRENT_USERrama de su antiguo registro de Windows.

Para usarlo, debe abrir regediten su nuevo Windows y seleccionar la HKEY_USERStecla.

Luego seleccione File-> Load Hive...y encuentre su antiguo directorio "home" de su antigua instalación de Windows. En este directorio debe haber un NTUSER.DATarchivo. Está oculto de forma predeterminada, por lo tanto, si no habilitó para mostrar archivos ocultos en las propiedades del explorador de Windows, puede ingresar manualmente el nombre del archivo en File nameel cuadro de entrada del cuadro de diálogo "Cargar sección" y presionar Enter. Luego, en la siguiente ventana de diálogo, ingrese un nombre clave para cargar el registro anterior. por ej tmp.

La HKEY_CURRENT_USERrama de su registro anterior ahora debería estar accesible en la HKEY_USERS\tmprama de su registro actual.

Ahora exporte la HKEY_USERS\tmp\Software\SimonTathamrama a un putty.regarchivo, abra este archivo en su editor de texto favorito y busque y reemplace todas las HKEY_USERS\tmpcadenas con HKEY_CURRENT_USER. Ahora guarda el .regarchivo.

Puede importar ahora este archivo en su registro actual de Windows haciendo doble clic en él. Vea la respuesta de m0nhawk sobre cómo hacer esto.

Al final, seleccione HKEY_USERS\tmprama en el editor de registro y luego seleccione File-> Unload Hive...y confirme esta operación.

Ruslan Stelmachenko
fuente