Как экспортировать / импортировать список сессий PuTTy?

679

Есть ли способ сделать это?

Или я должен вручную взять каждую запись из реестра?

s.webbandit
источник

Ответы:

1239

экспорт

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.

m0nhawk
источник
3
@NamGVU Это потому, что в пути есть папка с пробелами. Двигайся к тому, у кого его нет.
m0nhawk
3
@NamGVU Не заменяйте% userprofile% своим именем пользователя, оставьте его как есть.
Асрар
4
Как вы импортируете его в другую замазку на другом компьютере?
Пит
4
О, хорошо, двойной щелчок ... получил
Пит
7
Вторая команда работала для меня в Windows 7, однако мне нужно было запускать CMD в качестве администратора.
Скромная Крыса
46

Когда я попробовал другие решения, я получил эту ошибку:

Registry editing has been disabled by your administrator.

Фу на это, говорю я!

Я собрал приведенные ниже скрипты powershell для экспорта и импорта настроек PuTTY. Экспортированный файл - это файл Windows .reg, и он будет импортироваться без ошибок, в противном случае используйте import.ps1 для его загрузки.

Предупреждение : возиться с реестром, как это плохая идея ™, и я действительно не знаю, что я делаю. Используйте сценарии, представленные ниже, на свой страх и риск, и будьте готовы к тому, что ваш ИТ-отдел заново создаст образ вашей машины и задаст вам неудобные вопросы о том, что вы делали.

На исходном компьютере:

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

Извиняюсь за неидиоматический код, я не очень знаком с Powershell. Улучшения приветствуются!

dwurf
источник
3
Работал отлично, что экономит время. Одно дополнение ... Я должен был следовать инструкциям здесь, чтобы настроить разрешения: stackoverflow.com/questions/4037939/… .
Джейкоб Цвиерс
1
Это была отличная помощь! У меня были разные
разделы
Подождите, поэтому PowerShell обходит групповую политику? Интересно, как долго это будет исправлено.
Вопросы
Не уверен, но мы на четыре года и
считаем
Я пытался не работал для меня.
Велмуруган
44
  1. Запустите Run, затем введите в раскрывающемся окне Открыть: 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 все было там. Просто и эффективно.

monsune
источник
2
Этот ответ достаточно узок, чтобы его можно было включить в отдельный вопрос для автономного восстановления. Спасибо.
Фрэнк Филлипс
4
Я бы добавил, что NTUSER.DAT находится в папке Users / [Имя пользователя] как защищенный системный файл, а не в Windows / SYSTEM32 / Config.
Фрэнк Филлипс
13

Для тех, кто не хочет связываться с реестром, была создана разновидность шпаклевки, которая сохраняется в файл. Он находится здесь: http://jakub.kotrla.net/putty/

Было бы неплохо, если бы команда разработчиков putty приняла это в качестве опции в основной дистрибутив.

Джейсон К.
источник
13

Это было гораздо проще импортировать из реестра, чем указано выше. + Просто:

  1. щелкните правой кнопкой мыши на файле и
  2. выберите «Объединить»

Работал как чемпион на Win 7 Pro.

DudeGoingDeaf
источник
2
У меня тоже работала на Windows 10
января
3
Я могу подтвердить - это работает без нареканий на Win10. Самый простой «импорт» за всю историю. Спасибо!
Д-Уэйд
10

Пример:
Как перенести конфигурацию замазки и конфигурацию сеанса из одной учетной записи пользователя в другую, например, когда создается новая учетная запись и вы хотите использовать сеансы / конфигурации замазки из старой учетной записи

Процесс:
- экспорт ключа реестра из старой учетной записи в файл
- импорт ключа реестра из файла в новую учетную запись

Экспорт регистрационного ключа: (со СТАРОГО аккаунта)

  1. Войдите в старый аккаунт, например, tomold
  2. Откройте обычную командную строку (НЕ администратор!)
  3. Тип "regedit"
  4. Перейдите в раздел реестра, где хранится конфигурация, например, [HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham] и нажмите на нее
  5. Выберите «Экспорт» в меню файла или щелкните правой кнопкой мыши (радио ctrl «выбранная ветка»)
  6. Сохраните в файл и назовите его, например, «puttyconfig.reg»
  7. Выйти снова

Импортировать регистрационный ключ: (в НОВЫЙ аккаунт)

  1. Войти в новый аккаунт, например, Том

  2. Откройте обычную командную строку (НЕ администратор!)

  3. Тип "regedit"

  4. Выберите «Импорт» из меню

  5. Выберите файл реестра для импорта, например, 'puttyconfig.reg'

  6. Выполнено

Примечание:
не используйте «командную строку администратора», так как настройки находятся в «[HKEY_CURRENT_USER ...]», и regedit будет запускаться от имени администратора и показывать этот раздел для пользователя-администратора, а не для пользователя, из которого будет выполняться переход и / или к.

Mungo
источник
9

Улучшение решения бумеранга для импорта данных в 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"
LG
источник
8

Ответ, отправленный @ m0nhawk, похоже, не работает, когда я тестирую на компьютере с Windows 7. Вместо этого, используя следующие скрипты, вы сможете экспортировать / импортировать настройки 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

Ответ 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

YumUrli
источник
3

Существует сценарий PowerShell по адресу ratil.life/first-useful-powershell-script-putty-to-ssh-config, который может преобразовывать сеансы в формат, который можно использовать в .ssh/config. Его также можно найти на GitHub .

Этот отрывок содержит основные элементы кода и распечатывает полученную конфигурацию непосредственно на стандартный вывод:

# 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
источник
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...и подтвердите эту операцию.

Руслан Стельмаченко
источник