¿Hay alguna forma de hacer esto?
¿O tengo que tomar manualmente todos los registros del Registro?
¿Hay alguna forma de hacer esto?
¿O tengo que tomar manualmente todos los registros del Registro?
Respuestas:
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
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")
Haga doble clic en el *.reg
archivo y acepte la importación.
cmd.exe
, requiere símbolo del sistema elevado:regedit /i putty-sessions.reg
regedit /i putty.reg
reg import putty-sessions.reg
reg import putty.reg
Nota : no reemplace SimonTatham
con su nombre de usuario.
Nota : creará un reg
archivo en el escritorio del usuario actual.
Nota : Se no exportar claves SSH relacionados.
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!
Ejecute Ejecutar, luego escriba la ventana desplegable Abrir: regedit
Navegue hasta, al igual que en el Explorador de Windows:
HKEY_CURRENT_USER \ Software \ SimonTatham
Hecho.
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.
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.
Importar la exportación del registro fue mucho más fácil de lo que se indicó anteriormente. + Simplemente:
Trabajó como un campeón en Win 7 Pro.
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)
Importar clave de registro: (en NUEVA cuenta)
Inicie sesión en una cuenta NUEVA, por ejemplo, tom
Abra el 'símbolo del sistema' normal (¡NO administrador!)
Escriba 'regedit'
Seleccione 'Importar' del menú
Seleccione el archivo de registro para importar, por ejemplo, 'puttyconfig.reg'
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.
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.reg
copias copiando manualmente la configuración que desea migrar desde putty.reg
las PuTTYPortable\Data\settings\putty.reg
lí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"
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
Con este método también es posible realizar cambios masivos de configuración, como cambiar la fuente de todas las sesiones.
Extraído de aquí: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html
Utilizo el administrador de conexión de masilla donde creas una base de datos de sesiones. Es fácil copiar e importar esa base de datos a otras computadoras.
Mira esta práctica guía
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 }
}
}
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.DAT
archivo. 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_USER
rama de su antiguo registro de Windows.
Para usarlo, debe abrir regedit
en su nuevo Windows y seleccionar la HKEY_USERS
tecla.
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.DAT
archivo. 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 name
el 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_USER
rama de su registro anterior ahora debería estar accesible en la HKEY_USERS\tmp
rama de su registro actual.
Ahora exporte la HKEY_USERS\tmp\Software\SimonTatham
rama a un putty.reg
archivo, abra este archivo en su editor de texto favorito y busque y reemplace todas las HKEY_USERS\tmp
cadenas con HKEY_CURRENT_USER
. Ahora guarda el .reg
archivo.
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\tmp
rama en el editor de registro y luego seleccione File
-> Unload Hive...
y confirme esta operación.