如何导出/导入PuTTY会话列表?

有办法做到这一点吗?

或者我必须手动从注册处获取每条记录?

1131913 次浏览

导出

cmd.exe需要提升提示由于注册表:

仅会话(在桌面上生成文件putty-sessions.reg):

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

除了ssh键之外的所有设置(在桌面上生成文件putty.reg):

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

PowerShell:

仅会话(在桌面上生成文件putty-sessions.reg):

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

除了ssh键之外的所有设置(在桌面上生成文件putty.reg):

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

导入

双击*.reg文件并接受导入。

替代方法:

cmd.exe需要提升命令提示符:

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

PowerShell:

reg import putty-sessions.regreg import putty.reg

说明不会取代SimonTatham您的用户名。

说明:这些命令将没有导出相关的SSH键。

如果您想在PuTTY Portable上导入设置,您可以使用putty.reg文件。

只需将其放入此路径[path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg。程序将导入它

改进了将数据导入PuTTY portable的bumerang解决方案。

简单地将导出的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"

当我尝试其他解决方案时,我得到了这个错误:

Registry editing has been disabled by your administrator.

对此,我说!

我把下面的Powershell脚本放在一起,用于导出和导入PuTTY设置。导出的文件是一个windows. reg文件,如果您有权限,将完全导入,否则使用import.ps1加载它。

警告:像这样搞乱注册表是一个坏主意™,我真的不知道我在做什么。使用下面的脚本,风险自负,并准备好让你的IT部门重新映像你的机器,问你关于你在做什么的不舒服的问题。

在源机器上:

.\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 -Appendforeach ($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不是很熟悉。欢迎改进!

@m0nhawk发布的答案似乎不起作用,因为我在Windows 7机器上测试。相反,使用以下脚本将导出/导入油灰的设置:

::export@echo offset regfile=putty.regpushd %~dp0
reg export HKCU\Software\SimonTatham %regfile% /y
popd

--

::import@echo offpushd %~dp0set regfile=putty.reg
if exist %regfile% reg import %regfile%
popd
  1. 启动运行,然后在打开下拉窗口中键入:注册表

  2. 导航到,就像在Windows的资源管理器中一样:
    HKEY_CURRENT_USER\软件\SimonTatham

  3. 右键单击SimonTatham键(目录图标),选择导出
    给文件一个名称(说)putty.reg并将其保存到您的位置
    以后使用。
  4. 关闭注册表编辑器。

成交

对于那些不想弄乱注册表的人,已经创建了一个保存到文件的油灰变体。它位于此处:http://jakub.kotrla.net/putty/

如果油灰团队将此作为主要分布的一个选项,那就太好了。

使用此方法还可以执行大量配置更改,例如更改所有会话字体。

  1. 导出到. reg
  2. 执行搜索并替换. reg
  3. 删除所有会话
  4. 导入新的. reg

从这里提取:http://www.sysadmit.com/2015/11/putty-exportar-configuracion.html

对于那些需要从离线注册表文件导入Putty的人,例如,当您从崩溃的系统中恢复或只是移动到新机器并从旧驱动器上抓取数据时,还有一个解决方案值得一提:

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

这个伟大而免费的控制台应用程序将导出整个注册表或仅导出特定的注册表项。在我的情况下,我只是将注册表文件从旧驱动器复制到与导出工具相同的目录,然后我在CMD窗口中使用以下命令和语法以管理员身份运行:

RegFileExport.exeNTUSER.DATputty.reg”HKEY_CURRENT_USER\Software\SimonTatham”

导入. reg文件并启动Putty后,一切都在那里。简单而高效。

我使用油灰连接管理器来创建会话数据库。将该数据库复制并导入到其他计算机很容易。

看这个方便的指南

这是如此容易得多导入注册表导出比上面所说的。+简单地说:

  1. 右键单击文件并
  2. 选择“合并”

在Win 7 Pro上像冠军一样工作。

示例:
如何从一个用户帐户转移到另一个用户帐户,例如,当创建一个新帐户并希望使用旧帐户中的油灰会话/配置时

过程:
-将注册表键从旧帐户导出到文件
-将注册表项从文件导入新帐户

导出reg密钥:(来自旧账户)

  1. 登录到旧帐户,例如tomold
  2. 打开正常的“命令提示符”(不是管理员!)
  3. 类型注册表
  4. 导航到存储配置的注册表部分,例如[HKEY_CURRENT_USER\SOFTWARE\SimonTatham]并单击它
  5. 从文件菜单中选择“导出”或右键单击(单选ctrl“选定分支”)
  6. 保存到文件中并命名为“puttyconfig.reg”
  7. 再次注销

导入reg键:(新账户)

  1. 登录新账户,例如tom

  2. 打开正常的“命令提示符”(不是管理员!)

  3. 类型注册表

  4. 从菜单中选择“导入”

  5. 选择要导入的注册表文件,例如puttyconfig.reg

  6. 成交

备注:
不要使用“admin命令提示符”,因为设置位于“[HKEY_CURRENT_USER…]”下,注册表将以管理员身份运行,并为admin-user显示该部分,而不是用户从和/或到。

M0nhawk的回答在Windows 10上对我不起作用-它需要提升命令提示符并拒绝发出文件。

这工作并且不需要提升:

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

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 profileGet-ChildItem $regPath -Name | ForEach-Object {
# Check if SSH configif (((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\$_").HostNameif ($puttyHostname -like '*@*') {$sshHostname = $puttyHostname.split("@")[-1]}else { $sshHostname = $puttyHostname }$hostnameLine = "`tHostName $sshHostname"
# Parse Hostname for special cases (Bastion) to create Userif ($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\$_").PublicKeyFileif ($puttyKeyfile) {$sshKeyfile = $puttyKeyfile.replace('\', '/')if ($prefix) { $sshKeyfile = $sshKeyfile.replace('C:', $prefix) }$identityLine = "`tIdentityFile $sshKeyfile"}
# Parse Configured Tunnels$puttyTunnels = (Get-ItemProperty -Path "$regPath\$_").PortForwardingsif ($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\$_").AgentFwdif ($puttyAgent -eq 1) { $agentLine = "`tForwardAgent yes" }
# Parse if non-default port$puttyPort = (Get-ItemProperty -Path "$regPath\$_").PortNumberif (-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 STDOUTif ($outfile) { $output | Out-File $outfile -Append}else { Write-Host $output }}
}

如果你,像我一样,安装了新的Windows和只有之后你记得油灰会话,你仍然可以导入它们,如果你有旧的Windows硬盘驱动器或至少你的旧“家”目录备份(C:\Users\<user_name>)。

在此目录中应该有NTUSER.DAT文件。默认情况下它是隐藏的,因此您应该在Windows资源管理器中启用隐藏文件或使用其他文件浏览器。此文件包含旧Windows注册表的HKEY_CURRENT_USER分支。

要使用它,您需要在新Windows上打开regedit,然后选择HKEY_USERS键。

然后选择File->Load Hive...并找到旧Windows安装的旧“home”目录。在此目录中应该有NTUSER.DAT文件。默认情况下它是隐藏的,因此,如果您没有启用在Windows资源管理器属性中显示隐藏文件,那么您只需手动将文件名输入“Load Hive”对话框的File name输入框并按输入。然后在下一个对话框窗口中输入一些键名以将旧注册表加载到其中。例如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...并确认此操作。