Bagaimana cara mengekspor / mengimpor daftar sesi Putty?


678

Apakah ada cara untuk melakukan ini?

Atau saya harus mengambil secara manual setiap catatan dari Registry?

Jawaban:


1238

Ekspor

cmd.exe, memerlukan prompt yang ditinggikan:

Hanya sesi:

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

Semua pengaturan:

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

Powershell:

Hanya sesi:

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

Semua pengaturan:

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

Impor

Klik dua kali pada *.regfile dan terima impor.

Cara alternatif:

cmd.exe, memerlukan command prompt yang ditinggikan:

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

PowerShell:

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

Catatan : jangan ganti SimonTatham dengan nama pengguna Anda.

Catatan : Ini akan membuat regfile di Desktop pengguna saat ini.

Catatan : Itu tidak akan mengekspor kunci SSH terkait.


3
@NamGVU Itu karena path memiliki folder dengan spasi. Pindah ke yang tidak memilikinya.
m0nhawk

3
@NamGVU Jangan mengganti% userprofile% dengan nama pengguna Anda, biarkan apa adanya.
Asrar

4
Bagaimana Anda mengimpornya ke Dempul yang berbeda di mesin yang berbeda?
Pete

4
Oh ok, klik dua kali ... mengerti
Pete

7
Perintah kedua bekerja untuk saya di Windows 7, namun, saya perlu menjalankan CMD sebagai administrator.
The Humble Rat

46

Ketika saya mencoba solusi lain saya mendapat kesalahan ini:

Registry editing has been disabled by your administrator.

Aduh itu, kataku!

Saya mengumpulkan skrip powershell di bawah ini untuk mengekspor dan mengimpor pengaturan Putty. File yang diekspor adalah file .reg windows dan akan mengimpor dengan bersih jika Anda memiliki izin, jika tidak gunakan import.ps1 untuk memuatnya.

Peringatan : mengacaukan registri seperti ini adalah Ide Buruk ™, dan saya tidak benar-benar tahu apa yang saya lakukan. Gunakan skrip di bawah ini dengan risiko Anda sendiri, dan bersiaplah untuk meminta departemen TI Anda mengubah gambar mesin Anda dan mengajukan pertanyaan tidak nyaman tentang apa yang Anda lakukan.

Di mesin sumber:

.\export.ps1

Pada mesin target:

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

Permintaan maaf untuk kode non-idiomatik, saya tidak begitu akrab dengan Powershell. Perbaikan dipersilahkan!


3
Bekerja dengan baik, sangat menghemat waktu. Satu tambahan ... Saya harus mengikuti instruksi di sini untuk mengatur izin: stackoverflow.com/questions/4037939/… .
Jacob Zwiers

1
Itu sangat membantu! Saya memiliki lokasi registri yang berbeda hanya harus mengedit jalan di keduanya dan hanya itu :)
SidJ

Tunggu, jadi PowerShell menghindari kebijakan grup? Bertanya-tanya berapa lama sampai itu ditambal.
Pertanyaan Quolonel

Tidak yakin, tetapi kami berada di empat tahun dan terus bertambah;)
dwurf

Saya mencoba tidak bekerja untuk saya.
Velmurugan

44
  1. Luncurkan Jalankan, lalu ketikkan jendela Buka turun bawah: regedit

  2. Navigasikan ke, persis seperti di Window's Explorer:
    HKEY_CURRENT_USER \ Software \ SimonTatham

  3. Klik kanan pada tombol 'SimonTatham' (ikon direktori), pilih Ekspor
    Beri nama file (katakanlah) putty.reg dan simpan ke lokasi Anda untuk
    digunakan nanti.
  4. Tutup Penyunting Registri.

Selesai


34

Jika Anda ingin mengimpor pengaturan pada PuTTY PortableAnda dapat menggunakan putty.regfile.

Masukkan saja ke jalan ini [path_to_Your_portable_apps]PuTTYPortable\Data\settings\putty.reg. Program akan mengimpornya


23

Bagi Anda yang perlu mengimpor Putty dari file registri offline misalnya ketika Anda sedang memulihkan dari sistem crash atau hanya pindah ke mesin baru dan mengambil data dari drive lama ada satu solusi lagi yang layak disebutkan:

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

Aplikasi konsol yang hebat dan gratis ini akan mengekspor seluruh registri atau hanya kunci registri tertentu. Dalam kasus saya, saya cukup menyalin file registri dari drive lama ke direktori yang sama dengan alat eksportir dan kemudian saya menggunakan perintah dan sintaks berikut dalam jendela CMD yang dijalankan sebagai administrator:

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

Setelah mengimpor file .reg dan memulai Putty, semuanya ada di sana. Sederhana dan efisien.


2
Jawaban ini cukup sempit untuk kasus penggunaan untuk dimasukkan dalam pertanyaan terpisah untuk pemulihan offline. Terima kasih.
Frank Phillips

4
Saya akan menambahkan catatan bahwa NTUSER.DAT terletak di Users / [Username] sebagai file sistem yang dilindungi, dan bukan di Windows / SYSTEM32 / Config.
Frank Phillips

13

Bagi mereka yang tidak ingin mengacaukan registri, variasi dempul yang disimpan ke file telah dibuat. Terletak di sini: http://jakub.kotrla.net/putty/

Alangkah baiknya jika tim dempul akan mengambil ini sebagai opsi ke distribusi utama.


13

Ini jauh lebih mudah mengimpor ekspor registri daripada apa yang dinyatakan di atas. + Cukup:

  1. klik kanan pada file dan
  2. pilih "Gabung"

Bekerja seperti juara di Win 7 Pro.


2
Bekerja untuk saya di Windows 10 juga
Jan

3
Saya dapat mengkonfirmasi - ini bekerja dengan sempurna di Win10. "Impor" termudah yang pernah ada. Terima kasih!
d-wade

10

Contoh:
Cara mentransfer konfigurasi dempul dan konfigurasi sesi dari satu akun pengguna ke akun lain misalnya ketika membuat akun baru dan ingin menggunakan sesi / konfigurasi dempul dari akun lama

Proses:
- Ekspor kunci registri dari akun lama ke file
- Impor kunci registri dari file ke akun baru

Kunci reg ekspor: (dari akun OLD)

  1. Login ke akun TUA misalnya tomold
  2. Buka 'command prompt' yang normal (BUKAN admin!)
  3. Ketik 'regedit'
  4. Arahkan ke bagian registri tempat konfigurasi disimpan misalnya [HKEY_CURRENT_USER \ SOFTWARE \ SimonTatham] dan klik di atasnya
  5. Pilih 'Ekspor' dari menu file atau klik kanan mouse (radio ctrl 'cabang terpilih')
  6. Simpan ke dalam file dan beri nama misalnya 'puttyconfig.reg'
  7. Keluar lagi

Impor kunci reg: (ke akun BARU)

  1. Login ke akun BARU mis

  2. Buka 'command prompt' yang normal (BUKAN admin!)

  3. Ketik 'regedit'

  4. Pilih 'Impor' dari menu

  5. Pilih file registri untuk diimpor misalnya 'puttyconfig.reg'

  6. Selesai

Catatan:
Jangan gunakan 'admin command prompt' karena pengaturan terletak di bawah '[HKEY_CURRENT_USER ...]' dan regedit akan berjalan sebagai admin dan menunjukkan bagian itu untuk pengguna admin daripada pengguna untuk mentransfer dari dan / atau untuk.


9

Perbaikan solusi bumerang untuk mengimpor data ke PuTTY portable.

Cukup memindahkan yang diekspor putty.reg(dengan solusi m0nhawk) ke PuTTYPortable\Data\settings\tidak berfungsi. Putty Portable membuat cadangan file dan membuat yang kosong baru.

Untuk mengatasi masalah ini, gabungkan kedua putty.regpenyalinan secara manual konfigurasi yang ingin Anda migrasikan dari yang diekspor putty.regke yang baru dibuat di PuTTYPortable\Data\settings\putty.regbawah baris berikut.

REGEDIT4

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

8

Jawaban yang diposting oleh @ m0nhawk tampaknya tidak berfungsi saat saya uji pada mesin Windows 7. Sebagai gantinya, menggunakan skrip berikut akan mengekspor / mengimpor pengaturan dempul:

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

Jawaban m0nhawk tidak bekerja untuk saya di Windows 10 - diperlukan peningkatan prompt perintah dan menolak memancarkan file.

Ini berfungsi dan tidak memerlukan elevasi:

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



3

Ada skrip PowerShell di ratil.life/first-useful-powershell-script-putty-to-ssh-config yang dapat mengubah sesi menjadi format yang dapat digunakan .ssh/config. Itu juga dapat ditemukan di GitHub .

Kutipan ini berisi isi utama kode, dan akan mencetak konfigurasi yang dihasilkan langsung ke 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

Jika Anda, seperti saya, menginstal Windows baru dan hanya setelah Anda ingat tentang sesi dempul, Anda masih dapat mengimpornya, jika Anda memiliki hard drive Windows lama atau setidaknya direktori "rumah" lama Anda didukung ( C:\Users\<user_name>).

Dalam direktori ini harus ada NTUSER.DATfile. Tersembunyi secara default, jadi Anda harus mengaktifkan file tersembunyi di Windows explorer Anda atau menggunakan browser file lain. File ini berisi HKEY_CURRENT_USERcabang dari registri Windows lama Anda.

Untuk menggunakannya, Anda harus membuka regeditWindows baru Anda, dan pilih HKEY_USERStombol.

Kemudian pilih File-> Load Hive...dan temukan direktori "rumah" lama dari instalasi Windows lama Anda. Dalam direktori ini harus ada NTUSER.DATfile. Tersembunyi secara default, jadi, jika Anda tidak memungkinkan untuk menampilkan file tersembunyi di properti Windows explorer Anda, maka Anda bisa memasukkan nama file secara manual ke dalam File namekotak input dialog "Load Hive" dan tekan Enter. Kemudian di jendela dialog berikutnya masukkan beberapa nama kunci untuk memuat registri lama ke dalamnya. mis tmp.

HKEY_CURRENT_USERCabang registri lama Anda sekarang harus dapat diakses di bawah HKEY_USERS\tmpcabang registri Anda saat ini.

Sekarang ekspor HKEY_USERS\tmp\Software\SimonTathamcabang ke putty.regfile, buka file ini di editor teks favorit Anda dan temukan-dan-ganti semua HKEY_USERS\tmpstring HKEY_CURRENT_USER. Sekarang simpan .regfile tersebut.

Anda dapat mengimpor sekarang file ini ke dalam registri Windows Anda saat ini dengan mengklik dua kali. Lihat jawaban m0nhawk bagaimana melakukan ini.

Pada akhirnya, pilih HKEY_USERS\tmpcabang di editor registri dan kemudian pilih File-> Unload Hive...dan konfirmasi operasi ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.