it-swarm.dev

¿Cómo exportar/importar lista de sesiones de PuTTY?

¿Hay alguna forma de hacer esto?

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

590
s.webbandit

Exportar

cmd.exe, require elevated Solicitud:

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 archivo *.reg y acepte la importación.

Formas alternativas:

cmd.exe, require elevated command Prompt:

regedit /i PuTTY-sessions.reg
regedit /i PuTTY.reg

Potencia Shell:

reg import PuTTY-sessions.reg
reg import PuTTY.reg

Nota : no reemplazarSimonTatham con su nombre de usuario.

Nota : Creará un archivo reg en el escritorio del usuario actual.

Nota : Se no exportará claves SSH relacionadas.

1069
m0nhawk

Cuando probé las otras soluciones obtuve este error:

Registry editing has been disabled by your administrator.

¡Fooey a eso, digo!

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

Advertencia : jugar con el registro como este es una Bad 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 una imagen 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!

39
dwurf
  1. Ejecute Ejecutar, luego escriba en la ventana desplegable Abrir: regedit

  2. Vaya a, 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
    Asigne un nombre al archivo (por ejemplo) PuTTY.reg y guárdelo en su ubicación para
    uso posterior.
  4. Cierre el Editor del Registro.

Hecho.

35

Si desea importar configuraciones en PuTTY Portable puede usar el archivo PuTTY.reg.

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

34
bumerang

Para aquellos de ustedes que necesitan importar PuTTY desde un archivo de registro fuera de línea, por ejemplo. cuando se está recuperando de un sistema bloqueado o simplemente se está moviendo a una máquina nueva y está recogiendo datos de ese disco viejo, hay una solución más que vale la pena mencionar:

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

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

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

Después de importar el archivo .reg y de iniciar PuTTY, todo estaba allí. Sencillo y eficiente.

18
monsune

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

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

12
Jason

Esto fue mucho más fácil importar la exportación del registro que lo que se indica anteriormente. + Simplemente

  1. clic derecho sobre el archivo y
  2. seleccione "Fusionar"

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

11
DudeGoingDeaf

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

Proceso:
- Exportar clave de registro de una cuenta antigua a un archivo
- Importe la clave de registro del archivo a una nueva cuenta

Exportar clave de registro: (de cuenta OLD)

  1. Inicie sesión en la cuenta OLD, por ejemplo. al moho
  2. Abre el 'Indicador de comando' normal (NO admin!)
  3. Tipo 'regedit'
  4. Vaya a la sección de registro donde se almacena la configuración, por ejemplo. [HKEY_CURRENT_USER\SOFTWARE\SimonTatham] y haga clic en él
  5. Seleccione 'Exportar' en el menú de archivo o haga clic con el botón derecho del ratón (ctrl de radio 'rama seleccionada')
  6. Guardar en el archivo y asígnele un nombre, por ejemplo. 'puttyconfig.reg'
  7. Cerrar sesión de nuevo

Importar clave de registro: (en NUEVA cuenta)

  1. Inicia sesión en una cuenta NUEVA tom

  2. Abre el 'Indicador de comando' normal (NO admin!)

  3. Tipo 'regedit'

  4. Seleccione 'Importar' del menú

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

  6. Hecho

Nota:
No use un 'Indicador de comando de administrador' ya que las configuraciones se encuentran en '[HKEY_CURRENT_USER ...]' y regedit se ejecutaría como administrador y mostraría esa sección para el usuario administrador en lugar de para la transferencia del usuario y/o a.

9
Mungo

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

El simple hecho de mover PuTTY.reg exportado (con la solución m0nhawk) a PuTTYPortable\Data\settings\ no funcionó. PuTTY Portable copia el archivo y crea uno nuevo vacío.

Para solucionar este problema, fusione ambos PuTTY.reg copiando manualmente la configuración que desea migrar desde su PuTTY.reg exportado a la PuTTYPortable\Data\settings\PuTTY.reg recién creada debajo de las siguientes líneas.

REGEDIT4

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

La respuesta publicada por @ m0nhawk no parece funcionar como lo pruebo en una máquina con Windows 7. En su lugar, el uso de los siguientes scripts exportaría/importaría la configuración 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 respuesta de m0nhawk no funcionó para mí en Windows 10, requirió una solicitud de comando elevada y se negó a emitir un archivo.

Esto funcionó y no requirió elevación:

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

Usando este método, también es posible realizar cambios de configuración masivos, como cambiar la fuente de todas las sesiones.

  1. Exportar a .reg
  2. Realizar una búsqueda y reemplazar sobre .reg
  3. Eliminar todas las sesiones
  4. Importar el nuevo .reg

Extraído de aquí: http://www.sysadmit.com/2015/11/PuTTY-exportar-configuracion.html

6
YumUrli

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 se puede usar en .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 la salida estándar:

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

}
2
mwfearnley

Yo uso PuTTY Connection Manager donde creas una base de datos de sesiones. Es fácil copiar e importar esa base de datos a otras computadoras.

Ver esto guía práctica

2
jasonoriordan