PuTTy 세션 목록을 내보내거나 가져 오는 방법은 무엇입니까?


678

이 방법이 있습니까?

아니면 레지스트리에서 모든 레코드를 수동으로 가져와야합니까?

답변:


1238

수출

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

PowerShell :

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

참고 : 사용자 이름으로 바꾸지 마십시오 SimonTatham .

참고 : reg현재 사용자의 바탕 화면에 파일 이 생성됩니다 .

참고 : 관련 SSH 키 는 내 보내지 않습니다 .


3
@NamGVU 경로에 공백이있는 폴더가 있기 때문입니다. 가지고 있지 않은 것으로 이동하십시오.
m0nhawk

3
@NamGVU % userprofile %을 사용자 이름으로 바꾸지 말고 그대로 두십시오.
Asrar

4
다른 기계의 다른 퍼티로 어떻게 가져 옵니까?
Pete

4
확인 아, 더블 클릭 ... 그것을 가지고
피트

7
Second Command는 Windows 7에서 나를 위해 일했지만 CMD를 관리자로 실행해야했습니다.
The Humble Rat

46

다른 솔루션을 시도했을 때이 오류가 발생했습니다.

Registry editing has been disabled by your administrator.

그것에 푸이, 나는 말한다!

PuTTY 설정을 내보내고 가져 오기 위해 아래의 powershell 스크립트를 정리했습니다. 내 보낸 파일은 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 -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에 익숙하지 않습니다. 개선을 환영합니다!


3
완벽하게 작동하여 시간을 절약 할 수 있습니다. 한 가지 추가 사항 ... 여기에 지침을 따라 권한을 설정해야했습니다 : stackoverflow.com/questions/4037939/… .
Jacob Zwiers

1
큰 도움이되었습니다! 나는 다른 레지스트리 위치가 둘 다에서 경로를 편집해야했고 그것이
그랬

잠깐, PowerShell이 ​​그룹 정책을 우회합니까? 때까지 얼마나 원더 패치됩니다.
Quolonel 질문

확실하지 않지만, 우리는 4 년이었고 세는;)
dwurf

나는 나를 위해 일하지 않았다.
Velmurugan

44
  1. 실행을 시작한 다음 열기 드롭 다운 창에 입력하십시오 : regedit

  2. 창 탐색기에서와 같이
    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

오프라인 레지스트리 파일에서 퍼티를 가져와야하는 경우 (예 : 손상된 시스템에서 복구하거나 단순히 새 컴퓨터로 이동하고 이전 드라이브에서 데이터를 가져 오는 경우) 언급 할 가치가있는 솔루션이 하나 더 있습니다.

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

이 훌륭한 무료 콘솔 응용 프로그램은 전체 레지스트리 또는 특정 레지스트리 키만 내 보냅니다. 내 경우에는 단순히 이전 드라이브에서 레지스트리 도구를 내보내기 도구와 동일한 디렉토리로 복사 한 다음 CMD 창에서 다음 명령과 구문을 관리자로 실행했습니다.

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

.reg 파일을 가져오고 Putty를 시작한 후 모든 것이 거기에있었습니다. 간단하고 효율적입니다.


2
이 답변은 오프라인 복구를위한 별도의 질문에 포함 할 수있는 유스 케이스만큼 좁습니다. 감사.
Frank Phillips

4
NTUSER.DAT는 Windows / SYSTEM32 / Config가 아니라 Users / [Username]에 보호 시스템 파일로 있습니다.
Frank Phillips

13

레지스트리를 망치고 싶지 않은 사람들을 위해 파일에 저장하는 퍼티 변형이 만들어졌습니다. 여기에 있습니다 : http://jakub.kotrla.net/putty/

퍼티 팀이 이것을 메인 배포판의 옵션으로 사용한다면 좋을 것입니다.


13

위에서 언급 한 것보다 레지스트리 내보내기를 가져 오는 것이 훨씬 쉬웠습니다. + 간단히 :

  1. 파일을 마우스 오른쪽 버튼으로 클릭하고
  2. "병합"을 선택하십시오

Win 7 Pro에서 챔피언처럼 일했습니다.


2
Windows 10에서도 나를 위해 일했습니다
1

3
확인할 수 있습니다-Win10에서 완벽하게 작동합니다. 가장 쉬운 "가져 오기". 감사!
d-wade

10

예 :
한 사용자 계정에서 다른 사용자 계정으로 퍼티 구성 및 세션 구성을 전송하는 방법 ( 예 : 새 계정을 생성하고 이전 계정의 퍼티 세션 / 구성을 사용하려는 경우)

프로세스 :
-기존 계정
에서 파일로 레지스트리 키 내보내기 -파일에서 새 계정으로 레지스트리 키 가져 오기

등록 키 내보내기 : (OLD 계정에서)

  1. OLD 계정에 로그인하십시오 (예 : 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 ...]'아래에 있으므로 'admin 명령 프롬프트'를 사용하지 마십시오 . regedit는 admin으로 실행되고 사용자가 다음으로 전송하는 대신 admin-user에 대한 해당 섹션을 표시합니다. 에.


9

에 데이터를 가져 오기위한 bumerang 솔루션 개선 PuTTY portable.

putty.regm0nhawk 솔루션 으로 내 보낸 이동 PuTTYPortable\Data\settings\만으로는 작동하지 않았습니다. PuTTY Portable는 파일을 백업하고 비어있는 새 파일을 만듭니다.

이 문제를 해결하려면 putty.reg내 보낸 구성 putty.regPuTTYPortable\Data\settings\putty.reg아래 에서 새로 생성 한 다음 행 으로 마이그레이션하려는 구성을 수동으로 병합 하십시오 .

REGEDIT4

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

8

@ 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

7

m0nhawk의 답변이 Windows 10에서 작동하지 않았습니다. 높은 명령 프롬프트가 필요하고 파일 방출을 거부했습니다.

이것은 효과가 있었고 상승이 필요하지 않았습니다.

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



3

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

나와 같이 새 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...하고이 작업을 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.