728x90
무료로 사용했던 터미널 프로그램인 Putty 에서 사용했던 세션(서버 접속) 리스트를 유료인 Secure CRT 프로그램으로 옮기는 방법을 정리해본다.
Putty 는 간단하게 서버에 접속해서 사용할 수는 있지만 로그인할때 패스워드 저장이 직관적으로 지원하지도 않기도 하고(방법이 없는건 아니지만 설정 방법이 번그롭다) Secure CRT 에서 지원되는 여러 창에 같은 명령어를 전달할 수 있는 기능 때문이라도 옮겨야 하는 상황이다.
1. cmd 창에서 다음 명령어로 Putty 세션을 작업 디렉토리에 저장한다.
reg export "HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions" "D:\WorkDir\putty-sessions.reg"
2. 아래 python 파일을 작업 디렉토리에 convert.py 로 저장한다. 레지스트리 내용을 CRT 에서 사용하는 ini 파일 형식으로 변경한다.
import os
import re
import urllib.parse
# 1단계에서 내보낸 reg 파일 이름
reg_file_path = "putty-sessions.reg"
# 저장될 SecureCRT Sessions 폴더명
output_dir = "SecureCRT_Sessions"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
def parse_reg_file(filepath):
sessions = {}
current_session = None
# reg 파일 읽기 (UTF-16 또는 UTF-8)
encoding = 'utf-16'
try:
with open(filepath, 'r', encoding=encoding) as f:
lines = f.readlines()
except UnicodeError:
encoding = 'utf-8'
with open(filepath, 'r', encoding=encoding) as f:
lines = f.readlines()
session_pattern = re.compile(r'^\[HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions\\(.*)\]')
value_pattern = re.compile(r'^"(.*?)"="(.*?)"')
for line in lines:
line = line.strip()
session_match = session_pattern.match(line)
if session_match:
raw_name = session_match.group(1)
# URL 인코딩된 세션 이름 디코딩 (%20 -> 공백)
session_name = urllib.parse.unquote(raw_name)
current_session = session_name
sessions[current_session] = {}
continue
if current_session:
value_match = value_pattern.match(line)
if value_match:
key, val = value_match.group(1), value_match.group(2)
sessions[current_session][key] = val
return sessions
def create_crt_ini(session_name, data):
host = data.get("HostName", "")
port = data.get("PortNumber", "22")
if port.startswith("dword:"):
port = str(int(port.replace("dword:", ""), 16))
username = data.get("UserName", "")
protocol = data.get("Protocol", "ssh")
# SecureCRT 세션 ini 내용 구성
ini_content = f"""S:"Protocol Name"={protocol.upper()}
S:"Hostname"={host}
S:"Username"={username}
D:"[SSH2] Port"={int(port):08x}
"""
# 안전한 파일명 생성
safe_name = re.sub(r'[\\/:*?"<>|]', '_', session_name)
file_path = os.path.join(output_dir, f"{safe_name}.ini")
with open(file_path, 'w', encoding='utf-8') as f:
f.write(ini_content)
sessions = parse_reg_file(reg_file_path)
for session_name, data in sessions.items():
if data: # 빈 세션 제외
create_crt_ini(session_name, data)
print(f"변환 완료! '{output_dir}' 폴더에 {len(sessions)}개의 세션이 생성되었습니다.")
3. reg 파일을 위의 convert.py 를 실행하면 output_dir 인 SecureCRT_Sessions 폴더에 putty 의 세션들이 파일로 생성된다.
4. "Options > Global Options..." 에서 "General - Configuration paths" 의 있는 경로를 확인한다.
ex) C:\Users\{{user}}}\AppData\Roaming\VanDyke\Config
5. Config 폴더안의 Sessions 폴더에 SecureCRT_Sessions 폴더의 파일들을 복사후, SecureCRT 를 재시작하면 Session Manager 탭에 추가된 내용이 보일것이다.
'Engineering > Windows' 카테고리의 다른 글
| 삭제안되는 앱 정리 on Windows (0) | 2026.07.23 |
|---|---|
| 윈도우 11에서 원격 접속 기록 확인 방법 (0) | 2026.04.14 |
| 안보이는 프로세스 찾기 on Windows (0) | 2025.06.16 |
| yt-dlp 실행 시 "ERROR: Could not copy cookie database." 에러 확인 (0) | 2025.01.03 |
| 윈도우 batch 스크립트에서 잠시 멈추는(sleep) 여러 방법 (1) | 2024.03.15 |