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

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

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


person s.webbandit    schedule 23.10.2012    source источник


Ответы (15)


Экспорт

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.

person m0nhawk    schedule 23.10.2012
comment
Я получил здесь ошибку в виде снимка - как с ней справиться? dropbox.com/s/ om426f8gen9mhxs / - person Nam G VU; 08.01.2015
comment
@NamGVU Это потому, что в пути есть папка с пробелами. Перейдите к тому, у которого его не было. - person m0nhawk; 08.01.2015
comment
Я пробовал без пробела в пути экспорта, но ошибка осталась. - person Nam G VU; 10.01.2015
comment
@NamGVU Не заменяйте% userprofile% своим именем пользователя, оставьте как есть. - person Asrar; 09.02.2015
comment
Спасибо, Асрар. Я попробую это - person Nam G VU; 10.02.2015
comment
Вторая команда работала у меня в Windows 7, однако мне нужно было запустить CMD от имени администратора. - person The Humble Rat; 16.10.2015
comment
Выполните первую команду из Run, а не cmd, и на рабочем столе (Win7) получил файл putty-sessions.reg. - person Aniket Thakur; 20.06.2016
comment
Я был вдохновлен вашим ответом, чтобы помочь sleske: serverfault.com/a/745968/329412 - person Nolwennig; 11.08.2016
comment
Я ничего не получаю в Windows 10 - person Maria Ines Parnisari; 03.09.2016
comment
@mparnisari Проверьте свой рабочий стол. Он должен создать там .reg файл со всеми настройками. - person m0nhawk; 04.09.2016
comment
Это сработало для меня, переместив это с Windows 7 на Windows 10, но мне пришлось запустить regedit от имени себя и использовать там функцию импорта. В противном случае, просто пытаясь импортировать сам файл .reg на новый компьютер, вместо этого импортируются настройки пользователю с правами администратора. - person Mark; 01.11.2016
comment
Я попробовал это и не получил ни одного файла. Я поискал в реестре и не нашел ключа с именем «SimonTatham». Это со шпатлевкой версии 0.62 с Windows 7. - person Larry Martell; 03.12.2016
comment
Для импорта я открыл компьютер, на котором хотел импортировать информацию о шпатлевке. кнопка запуска Windows- ›запустить regedit-› Файл- ›Импортировать и импортировать каждый файл .reg соответственно. - person Miles; 03.01.2017
comment
Похоже, это работает не так, как я ожидал. Моя группа работает примерно с 50 хостами, для которых я сохранил сеансы в Pageant / PuTTy. Приведенный выше метод экспорта создает файл, но когда я смотрю на него с помощью Edit, я не вижу ни имен хостов, ни адресов. Просто такие параметры, как цвет, тип терминала и т. Д. Я что-то упускаю или не понимаю, что это должно делать? Спасибо. - person Scott Law; 17.05.2017
comment
@ScottLaw Первая команда экспортирует только сеансы, но у них будут другие параметры, такие как цвет, шрифты и т. Д. Попробуйте выполнить поиск, например, HostName. - person m0nhawk; 17.05.2017
comment
@ m0nhawk: Нет, его просто не было. Глядя на версию с графическим интерфейсом пользователя, я внезапно осознал тот факт, что обе папки в сеансах были из старого проекта, в котором я работал, и ни одна из них не была в моих текущих сохраненных сеансах. Я выполнил поиск одного из моих текущих имен хостов по всему реестру и нашел кучу в HKEY_USERS в каком-то пакете Microsoft, и она содержала практически все, что я когда-либо сохранял, включая мой текущий стек. Щелкните правой кнопкой мыши и сохраните эту папку сеансов, и я думаю, что теперь я в порядке. Спасибо за ваше время. - person Scott Law; 17.05.2017
comment
Хотя, если вы пойдете по этому пути и попытаетесь предоставить ресурс для новых пользователей, я бы предложил отредактировать экспортированный файл, чтобы заменить все вхождения пути (мой был похоронен в HKEY_USERS) на HKEY_CURRENT_USER. Также попросите нового пользователя заменить все ссылки на ваше имя пользователя своими собственными перед импортом. - person Scott Law; 17.05.2017
comment
экспорт работал на одном компьютере, но не на другом (не удалось найти файл reg), почему? Оба были похожи с одной и той же ОС (Win10) - person Yannis Dran; 08.09.2017
comment
Насколько я знаю, вам не нужна командная строка с повышенными привилегиями при экспорте из ветки HKEY_CURRENT_USER\.... Повышенные права требуются только для HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT и т. Д. - person Wernfried Domscheit; 16.11.2018
comment
Если это PuTTy 64, он находится в HKEY_LOCAL_MACHINE\SOFTWARE\SimonTatham\PuTTY64. - person WesternGun; 17.02.2019
comment
Некоторые установки putty в Windows (и каждая установка в Linux) не используют реестр, помните, как вы идете. - person mckenzm; 02.08.2019

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

Registry editing has been disabled by your administrator.

Я говорю!

Я собрал приведенные ниже сценарии PowerShell для экспорта и импорта настроек PuTTY. Экспортированный файл представляет собой файл .reg для Windows и будет импортирован без ошибок, если у вас есть разрешение, в противном случае используйте 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. Улучшения приветствуются!

person dwurf    schedule 10.04.2015
comment
Работает отлично, экономия времени. Одно дополнение ... Мне пришлось следовать инструкциям здесь, чтобы настроить разрешения: stackoverflow.com/questions/4037939/. - person Jacob Zwiers; 25.05.2015
comment
Это было большим подспорьем! У меня были разные места в реестре, просто нужно было отредактировать путь в обоих, и все :) - person SidJ; 17.05.2017
comment
Подождите, так PowerShell обходит групповую политику? Интересно, как скоро это будет исправлено. - person Quolonel Questions; 20.06.2019
comment
Не уверен, но уже четыре года, и мы считаем;) - person dwurf; 21.06.2019
comment
К счастью, этой ошибки нет в Windows 10 1909. Использование New-Item в качестве обычного пользователя в PSProvider реестра теперь вызывает исключение System.UnauthorizedAccessException - person Rainmaker; 22.06.2020
comment
PuTTY - это программа, которая может редактировать ваш реестр. Если они исправят ваши разрешения, чтобы запускаемые пользователем программы не могли редактировать реестр, у вас не будет никаких настроек PuTTY для экспорта. - person LinuxDisciple; 16.09.2020
comment
Сценарий импорта у меня не сработал, но я смог просто открыть regedit и импортировать экспортированный файл. - person runrig; 25.03.2021

  1. Запустите «Выполнить», затем введите в раскрывающемся окне «Открыть»: regedit.

  2. Перейдите к, как в проводнике Windows:
    HKEY_CURRENT_USER \ Software \ SimonTatham

  3. Щелкните правой кнопкой мыши по клавише «SimonTatham» (значок каталога), выберите «Экспорт».
    Дайте файлу имя (скажем) putty.reg и сохраните его в своем местоположении для дальнейшего использования.
  4. Закройте редактор реестра.

Выполнено.

person Sireesh Yarlagadda    schedule 04.10.2015
comment
После экспорта скопируйте этот REG-файл на компьютер, на котором вы хотите использовать эти настройки. Просто дважды щелкните по нему, чтобы вступить в силу. - person admin; 27.10.2020

Если вы хотите импортировать настройки в PuTTY Portable, вы можете использовать файл putty.reg.

Просто поместите его на этот путь [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. Программа импортирует это

person bumerang    schedule 06.05.2013

Для тех из вас, кому нужно импортировать 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 все было на месте. Просто и эффективно.

person monsune    schedule 24.12.2015
comment
Этот ответ достаточно узок, чтобы его можно было включить в отдельный вопрос для автономного восстановления. Спасибо. - person Frank Phillips; 13.10.2016
comment
Я хотел бы добавить примечание, что NTUSER.DAT находится в Users / [Username] как защищенный системный файл, а не в Windows / SYSTEM32 / Config. - person Frank Phillips; 13.10.2016

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

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

person Jason K.    schedule 03.11.2015

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

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

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

person DudeGoingDeaf    schedule 29.01.2016
comment
Также работал у меня в Windows 10 - person Jan; 03.03.2016
comment
Могу подтвердить - на Win10 работает безотказно. Самый простой импорт. Спасибо! - person d-wade; 27.10.2016

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

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

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

  1. Войдите в СТАРУЮ учетную запись, например. плесневеть
  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 будет запускаться от имени администратора и показывать этот раздел пользователю с правами администратора. затем для перехода пользователя из и / или в.

person Mungo    schedule 21.12.2016

Ответ m0nhawk не сработал для меня в Windows 10 - он требовал командной строки с повышенными правами и отказывался выдавать файл.

Это сработало и не потребовало повышения:

reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY putty.reg
person fiat    schedule 05.04.2017

Улучшение решения бумеранга для импорта данных в 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"
person L. G.    schedule 22.11.2013

Ответ, опубликованный @ 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
person Meow    schedule 05.09.2015

С помощью этого метода также можно выполнять массовые изменения конфигурации, такие как изменение шрифта всех сеансов.

  1. Экспорт в .reg
  2. Выполните поиск и замените на .reg
  3. Удалить все сеансы
  4. Импортируйте новый .reg

Извлечено отсюда: http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html

person YumUrli    schedule 24.11.2015

Если вы, как и я, установили новую 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... и подтвердите эту операцию.

person Ruslan Stelmachenko    schedule 18.09.2019
comment
Этот ответ вместе с superuser.com/a/1370670/1198855 помог мне решить проблему. У меня по какой-то причине произошла ошибка при загрузке улья. Спасибо! - person stackunderflow; 16.07.2020

Сценарий 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 }
    }

}
person mwfearnley    schedule 01.04.2018

Я использую диспетчер соединений шпатлевки, в котором вы создаете базу данных сеансов. Эту базу данных легко скопировать и импортировать на другие компьютеры.

См. Это удобное руководство

person jasonoriordan    schedule 21.01.2016