هل هناك طريقة للقيام بذلك؟
أو يجب أن تأخذ يدويا كل سجل من التسجيل؟
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
جلسات فقط:
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
reg import PuTTY-sessions.reg
reg import PuTTY.reg
ملاحظة : لا تستبدل SimonTatham
باسم المستخدم الخاص بك.
ملاحظة : سيقوم بإنشاء ملف reg
على سطح المكتب للمستخدم الحالي.
ملاحظة : سوف لا تصدير مفاتيح SSH ذات الصلة.
عندما جربت الحلول الأخرى ، حصلت على هذا الخطأ:
Registry editing has been disabled by your administrator.
Phooey لذلك ، أقول!
أنا وضعت معا البرامج النصية powerhell أدناه لتصدير واستيراد إعدادات المعجون. الملف الذي تم تصديره هو ملف windows .reg وسيتم استيراده بشكل نظيف إذا كان لديك إذن ، وإلا استخدم import.ps1 لتحميله.
تحذير : العبث مع السجل مثل هذا هو Bad Badea ™ ، وأنا لا أعرف حقًا ما أفعله. استخدم البرامج النصية أدناه على مسؤوليتك الخاصة ، وكن مستعدًا لإعادة تعيين قسم تكنولوجيا المعلومات لجهازك وطرح أسئلة غير مريحة على ما كنت تفعله.
على الجهاز المصدر:
.\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. التحسينات هي موضع ترحيب!
شغّل Run (تشغيل) ، ثم اكتب نافذة Open (فتح) المنسدلة: regedit
انتقل إلى ، تمامًا كما في مستكشف Window:
HKEY_CURRENT_USER\SOFTWARE\SimonTatham
فعله.
إذا كنت تريد استيراد الإعدادات على PuTTY Portable
، يمكنك استخدام ملف PuTTY.reg
.
فقط ضعه على هذا المسار [path_to_Your_portable_apps]PuTTYPortable\Data\settings\PuTTY.reg
. سوف البرنامج استيراده
لأولئك منكم الذين يحتاجون إلى استيراد PuTTY من ملف التسجيل في وضع عدم الاتصال ، على سبيل المثال عند الاسترداد من نظام تعطل أو ببساطة الانتقال إلى جهاز جديد والحصول على البيانات من محرك الأقراص القديم هذا ، هناك حل آخر جدير بالذكر:
http://www.nirsoft.net/utils/registry_file_offline_export.html
سيقوم تطبيق وحدة التحكم الكبير والمجاني هذا بتصدير السجل بأكمله أو مفتاح تسجيل محدد فقط. في حالتي ، قمت ببساطة بنسخ ملف التسجيل من محرك أقراص قديم إلى نفس الدليل كأداة المُصدِّر ، ثم استخدمت الأمر التالي وبناء الجملة في إطار CMD يعمل كمسؤول:
RegFileExport.exe NTUSER.DAT PuTTY.reg "HKEY_CURRENT_USER\Software\SimonTatham"
بعد استيراد الملف .reg وبدء المعجون كل شيء كان هناك. بسيطة وفعالة.
بالنسبة لأولئك الذين لا يريدون الفوضى مع السجل ، تم إنشاء شكل مختلف من المعجون لحفظ الملف. إنه موجود هنا: http://jakub.kotrla.net/PuTTY/
سيكون لطيفًا إذا أخذ فريق PuTTY هذا كخيار في التوزيع الرئيسي.
كان هذا أسهل بكثير استيراد تصدير التسجيل مما هو مذكور أعلاه. + ببساطة:
عملت مثل البطل على وين 7 برو.
مثال:
كيفية نقل تكوين PuTTY وتهيئة الجلسة من حساب مستخدم إلى آخر ، على سبيل المثال عند إنشاء حساب جديد وتريد استخدام جلسات/تكوينات PuTTY من الحساب القديم
معالجة:
- تصدير مفتاح التسجيل من الحساب القديم إلى ملف
- استيراد مفتاح التسجيل من ملف إلى حساب جديد
تصدير مفتاح reg: (من حساب OLD)
استيراد مفتاح reg: (في حساب جديد)
تسجيل الدخول إلى حساب جديد على سبيل المثال توم
افتح "موجه الأوامر" العادي (وليس المشرف!)
اكتب "رجديت"
حدد "استيراد" من القائمة
حدد ملف التسجيل لاستيراده على سبيل المثال "puttyconfig.reg"
فعله
ملحوظة:
لا تستخدم "موجه أوامر المشرف" حيث توجد الإعدادات ضمن "[HKEY_CURRENT_USER ...]" وسيتم تشغيل رجديت كمسؤول وإظهار هذا القسم للمستخدم المسؤول بدلاً من ذلك لنقل المستخدم من و/أو إلى.
تحسن في حل bumerang لاستيراد البيانات إلى PuTTY portable
.
ببساطة نقل PuTTY.reg
المصدرة (مع حل m0nhawk) إلى PuTTYPortable\Data\settings\
لم ينجح. المعجون المحمولة النسخ الاحتياطي للملف وإنشاء واحدة جديدة فارغة.
للتغلب على هذه المشكلة ، قم بدمج كلاً من PuTTY.reg
مع نسخ التكوين الذي تريد ترحيله من PuTTY.reg
المصدر الخاص بك يدويًا إلى PuTTYPortable\Data\settings\PuTTY.reg
الذي تم إنشاؤه حديثًا أسفل الأسطر التالية.
REGEDIT4
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]
"RandSeedFile"="D:\\Programme\\PuTTYPortable\\Data\\settings\\PuTTY.RND"
يبدو أن الإجابة المنشورة بواسطة @ 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
لم تنجح إجابة m0nhawk بالنسبة لي على نظام التشغيل Windows 10 - تطلب الأمر موجهًا مرتفعًا ورفض إرسال ملف.
هذا العمل ولم يتطلب الارتفاع:
reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY putty.reg
باستخدام هذه الطريقة ، من الممكن أيضًا إجراء تغييرات في التكوين الشامل ، مثل تغيير خط جميع الجلسات.
مستخرج من هنا: http://www.sysadmit.com/2015/11/PuTTY-exportar-configuracion.html
يوجد نص PowerShell في ratil.life/first-useful-powershell-script-PuTTY-to-ssh-config والذي يمكنه تحويل الجلسات إلى تنسيق يمكن استخدامه في .ssh/config
. ويمكن أيضا أن تكون موجودة على جيثب .
يحتوي هذا المقتطف على الشجاعة الرئيسية للشفرة ، وسيطبع التكوين الناتج مباشرة إلى 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 }
}
}
يمكنني استخدام مدير اتصال PuTTY حيث يمكنك إنشاء قاعدة بيانات للجلسات. من السهل نسخ قاعدة البيانات هذه واستيرادها إلى أجهزة كمبيوتر أخرى.
انظر هذا دليل مفيد