Як експортувати / імпортувати список сеансів PuTTy?


678

Чи є спосіб це зробити?

Або я повинен вручну взяти кожен запис із реєстру?

Відповіді:


1238

Експорт

cmd.exe, вимагають підвищеного підказки:

Тільки сеанси:

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

Усі налаштування:

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

Powershell:

Тільки сеанси:

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

Усі налаштування:

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

Імпорт

Двічі клацніть по *.regфайлу та прийміть імпорт.

Альтернативні способи:

cmd.exe, вимагають підвищеного командного рядка:

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

PowerShell:

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

Примітка : не замінюйте SimonTatham своє ім’я користувача.

Примітка . Це створить regфайл на робочому столі поточного користувача.

Примітка . Він не експортує пов'язані SSH ключі.


3
@NamGVU Це тому, що шлях має папку з пробілами. Перейдіть до того, у кого його не було.
m0nhawk

3
@NamGVU Не замінюйте% userprofile% своїм іменем користувача, залишайте його таким, як є.
Асрар

4
Як ви імпортуєте його в іншу шпаклівку на іншій машині?
Піт

4
Ну добре, подвійне клацання ... отримав
Піт

7
Друга команда працювала на мене в Windows 7, проте мені потрібно було запустити CMD як адміністратор.
Покірний Щур

46

Коли я спробував інші рішення, я отримав цю помилку:

Registry editing has been disabled by your administrator.

Фой до цього, я кажу!

Я зібрав нижче наведені нижче сценарії повноважень для експорту та імпорту налаштувань PuTTY. Експортований файл являє собою файл Windows.

Попередження : возитися з реєстром, як це погана ідея ™, і я не знаю, що я роблю. Використовуйте наведені нижче сценарії на свій страх і ризик, і будьте готові, щоб ваш ІТ-відділ переобразував вашу машину і задавав вам незручні запитання про те, що ви робили.

На вихідній машині:

.\export.ps1

На цільовій машині:

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

Вибачте за неідіоматичний код, я не дуже знайомий з Пауершеллом. Поліпшення вітаються!


3
Працював відмінно, що економити час. Одне доповнення ... Я повинен був дотримуватися інструкцій тут, щоб налаштувати дозволи: stackoverflow.com/questions/4037939/… .
Яків Цвіерс

1
То була чудова допомога! У мене були різні місця реєстру, просто треба було відредагувати шлях в обох, і це все було :)
SidJ

Зачекайте, тож PowerShell обходить групову політику? Цікаво, скільки часу, поки це не зафіксується.
Quolonel questions

Не впевнений, але ми в чотири роки і рахуємо;)
dwurf

Я намагався не працювати для мене.
Велмуруган

44
  1. Запустіть запуск, а потім введіть у відкритому спадному вікні: regedit

  2. Перейдіть до
    пункту «Провідник Windows»: HKEY_CURRENT_USER \ Software \ SimonTatham

  3. Клацніть правою кнопкою миші клавішу "SimonTatham" (значок каталогу), виберіть "Експорт".
    Дайте файлу ім'я (скажімо) putty.reg та збережіть його у своєму місці для
    подальшого використання.
  4. Закрийте редактор реєстру.

Зроблено.


34

Якщо ви хочете імпортувати налаштування, PuTTY Portableви можете використовувати putty.regфайл.

Просто поставте його на цей шлях [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. Програма імпортуватиме його


23

Для тих з вас, кому потрібно імпортувати Putty з офлайн-файлу реєстру, наприклад, коли ви оновлюєтесь від аварійної системи або просто переходите на нову машину і захоплюєте дані зі старого диска, є ще одне рішення, яке варто згадати:

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

Цей великий та безкоштовний консольний додаток експортує весь реєстр або лише певний ключ реєстру. У моєму випадку я просто скопіював файл реєстру зі старого диска в той самий каталог, що й інструмент експортера, а потім я застосував наступні команди та синтаксис у вікні CMD, запустившись як адміністратор:

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

Після імпорту файлу .reg та запуску Putty все було там. Простий та ефективний.


2
Ця відповідь є достатньо вузькою для випадку використання, щоб її включити в окреме запитання для відновлення в режимі офлайн. Дякую.
Френк Філліпс

4
Я додам зауваження, що NTUSER.DAT розташований у Користувачах / [Ім’я користувача] як захищений системний файл, а не в Windows / SYSTEM32 / Config.
Френк Філіпс

13

Для тих, хто не хоче возитися з реєстром, створена версія шпаклівки, яка зберігає файл. Він розташований тут: http://jakub.kotrla.net/putty/

Було б добре, якби команда шпаклівки взяла це як варіант в основний дистрибутив.


13

Це було набагато простіше імпортувати експорт реєстру, ніж те, що зазначено вище. + Просто:

  1. клацніть правою кнопкою миші на файл і
  2. виберіть "Об'єднати"

Працював як чемпіон на Win 7 Pro.


2
Також працював для мене на Windows 10
січня

3
Я можу підтвердити - він працює бездоганно на Win10. Найпростіший "імпорт" будь-коли. Дякую!
d-wade

10

Приклад:
Як перенести конфігурацію шпаклівки та конфігурацію сеансу з одного облікового запису користувача на інший, наприклад, коли створено новий обліковий запис і потрібно використовувати сеанси / конфігурації шпаклівки зі старого облікового запису

Процес:
- Експорт ключа реєстру зі старого облікового запису у файл
- Імпорт ключа реєстру з файлу в новий рахунок

Ключ регістру експорту: (з облікового запису OLD)

  1. Увійдіть до облікового запису OLD, наприклад, tomold
  2. Відкрийте звичайний 'командний рядок' (НЕ адміністратор!)
  3. Введіть "regedit"
  4. Перейдіть до розділу реєстру, де зберігається конфігурація, наприклад [HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham] та натисніть на нього
  5. Виберіть "Експорт" у меню файлів або клацніть правою кнопкою миші (радіо ctrl "вибрана гілка")
  6. Збережіть у файл і назвіть його, наприклад, "puttyconfig.reg"
  7. Вийдіть знову

Ключ регістру імпорту: (у НОВИЙ рахунок)

  1. Увійдіть у новий аккаунт, наприклад, tom

  2. Відкрийте звичайний 'командний рядок' (НЕ адміністратор!)

  3. Введіть "regedit"

  4. Виберіть "Імпорт" у меню

  5. Виберіть файл реєстру для імпорту, наприклад, "puttyconfig.reg"

  6. Зроблено

Примітка.
Не використовуйте командний рядок адміністратора, оскільки налаштування розташовані в розділі "[HKEY_CURRENT_USER ...]", а regedit запускатиметься як адміністратор і показуватиме цей розділ для користувача-адміністратора, а не для передачі користувача з та / або до.


9

Вдосконалення рішення bumerang для імпорту даних у PuTTY portable .

Просто переміщуємо експортований putty.reg(з рішенням m0nhawk) доPuTTYPortable\Data\settings\ не спрацювало. PuTTY Portable створити резервну копію файлу та створити новий порожній.

Щоб вирішити цю проблему, з’єднайте обидві putty.regкопії вручну конфігурації, яку потрібно перенести з експортованого, putty.regдо новоствореного PuTTYPortable\Data\settings\putty.regнижче наступних рядків.

REGEDIT4

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

8

Відповідь, опублікована @ m0nhawk, здається, не працює, коли я тестую на машині Windows 7. Натомість за допомогою наступних сценаріїв було б експортувати / імпортувати налаштування шпаклівки:

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

Відповідь m0nhawk не працювала для мене в Windows 10 - вона вимагала підвищеного командного рядка і відмовилася видавати файл.

Це спрацювало і не вимагало підвищення:

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

6

За допомогою цього методу можна також здійснити масові зміни конфігурації, такі як зміна шрифту всіх сеансів.

  1. Експорт до .reg
  2. Виконайте пошук і замініть .reg
  3. Видаліть усі сеанси
  4. Імпортуйте новий .reg

Витягнуто звідси: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html



3

На ratil.life/first-useful-powershell-script-putty-to-ssh-config існує сценарій PowerShell, який може конвертувати сеанси у формат, в якому можна використовувати .ssh/config. Його також можна знайти на GitHub .

Цей уривок містить основні кишки коду і друкує отриманий конфігурацію безпосередньо до 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 }
    }

}

2

Якщо ви, як і я, встановили нову Windows і лише після того, як ви згадаєте про сеанси шпаклівки, ви все одно можете імпортувати їх, якщо у вас старий жорсткий диск Windows або принаймні створена резервна копія старого «домашнього» каталогу ( C:\Users\<user_name>).

У цьому каталозі має бути NTUSER.DATфайл. Він прихований за замовчуванням, тому вам слід включити приховані файли у вашому провіднику Windows або використовувати інший браузер файлів. Цей файл міститьHKEY_CURRENT_USER гілку вашого старого реєстру Windows.

Щоб скористатися ним, вам потрібно відкрити regeditнову Windows і вибрати HKEY_USERSключ.

Потім виберіть File-> Load Hive...і знайдіть старий "домашній" каталог вашої старої установки Windows. У цьому каталозі має бути NTUSER.DATфайл. Він прихований за замовчуванням, тому, якщо ви не увімкнули показ прихованих файлів у ваших властивостях провідника Windows, ви можете просто ввести ім'я файлу вручну в File nameполе введення діалогового вікна "Завантажити вулик" та натиснути Enter. Потім у наступному діалоговому вікні введіть якесь ключове ім’я, щоб завантажити в нього старий реєстр. напр tmp.

Тепер ваша HKEY_CURRENT_USERфілія реєстру повинна бути доступною під HKEY_USERS\tmpгілкою вашого поточного реєстру.

Тепер експортуйте HKEY_USERS\tmp\Software\SimonTathamгілку у putty.regфайл, відкрийте цей файл у вашому улюбленому текстовому редакторі та знайдіть та замініть всі HKEY_USERS\tmpрядки HKEY_CURRENT_USER. Тепер збережіть .regфайл.

Ви можете імпортувати цей файл у поточний реєстр Windows, двічі клацнувши його. Дивіться відповідь m0nhawk, як це зробити.

Зрештою, виберіть HKEY_USERS\tmpгілку в редакторі реєстру, а потім виберіть File-> Unload Hive...і підтвердіть цю операцію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.