sgcIndy 기능

OpenSSL 1.1/3.0 지원, XOAuth2 인증, Delphi 및 Free Pascal을 위한 향상된 네트워킹이 포함된 향상된 Indy TCP/IP 컴포넌트예요.

최신 OpenSSL 지원

최신 OpenSSL 라이브러리 및 TLS 표준으로 Indy 애플리케이션을 최신 상태로 유지해 보세요.

OpenSSL 1.1

TLS 1.2 및 TLS 1.3을 지원하는 OpenSSL 1.1.x 전체 지원이에요. 레거시 Indy OpenSSL 통합을 위한 손쉬운 교체예요.

OpenSSL 3.0

새로운 공급자 아키텍처, FIPS 준수, 개선된 암호 스위트 관리가 포함된 최신 OpenSSL 3.x 시리즈를 지원해요.

TLS 1.3

0-RTT 재개, 향상된 핸드셰이크 성능, 최신 암호 스위트가 포함된 최고 수준의 TLS 1.3 지원이에요.

XOAuth2 & 향상된 TCP/IP

XOAuth2 인증

Gmail, Outlook 및 기타 OAuth 2.0 공급자를 위한 내장 XOAuth2 지원이에요. 최신 OAuth 흐름으로 SMTP, IMAP, POP3 연결을 인증해요.

향상된 TCP/IP

표준 Indy 컴포넌트보다 향상된 연결 처리, 킵얼라이브 관리, 타임아웃 제어, 버퍼 관리를 제공해요.

무료 & 개방형

sgcIndy는 무료로 사용할 수 있어요. Delphi 7부터 RAD Studio 13 및 Free Pascal/Lazarus와 호환돼요. 라이선스 비용이나 로열티가 없어요.

SSH 클라이언트 — TIdSSHClient

안전한 원격 연결을 위한 완전한 기능을 갖춘 SSH 2.0 클라이언트예요. 암호화된 채널을 통해 명령 실행, 대화형 셸 열기, 포트 포워딩 설정이 가능해요.

안전한 원격 실행

TIdSSHClient는 완전한 SSH 수명 주기를 처리해요: 버전 교환, 키 협상, 사용자 인증, 채널 관리. 깔끔한 Delphi 컴포넌트 API로 SSH 서버에 연결하고 명령을 실행하거나, 셸을 열거나, 포트를 포워딩할 수 있어요.

  • 비밀번호, 공개 키 & 키보드-인터랙티브 인증
  • Execute() — 원격 명령을 실행하고 한 번의 호출로 출력을 가져와요
  • RequestShell / RequestPTY — 대화형 터미널 세션 열기
  • 포트 포워딩 — OpenDirectTCPIP 및 RequestForwarding을 통한 로컬 및 원격 TCP/IP 터널링
  • 멀티채널 — 단일 연결로 여러 동시 세션 열기
SSH_Example.pas
var
  SSH: TIdSSHClient;
  Output: string;
begin
  SSH := TIdSSHClient.Create(nil);
  try
    SSH.Host := 'server.example.com';
    SSH.Port := 22;
    SSH.Authentication.Username := 'admin';
    SSH.Authentication.Password := 'secret';
    SSH.Connect;

    // Execute a command and get output
    Output := SSH.Execute('ls -la /var/log');
    Memo1.Text := Output;

    SSH.Disconnect;
  finally
    SSH.Free;
  end;
end;

인증

비밀번호, 공개 키(RSA, ECDSA, ED25519), 키보드-인터랙티브 방법이에요. 선택적 패스프레이즈로 PEM 파일에서 개인 키를 로드해요. OnSSHHostKey 이벤트를 통한 호스트 키 검증이에요.

최신 암호화

Curve25519, ECDH, Diffie-Hellman 키 교환이에요. AES-CTR 및 AES-GCM 암호화예요. HMAC-SHA2 메시지 인증이에요. Algorithms 속성을 통한 구성 가능한 알고리즘 기본 설정이에요.

채널 & 서브시스템

OpenChannel로 하나의 연결에서 여러 채널을 열어요. 채널별로 exec, 셸 또는 서브시스템(SFTP 등)을 요청해요. 채널별로 독립적으로 데이터, 신호, EOF를 전송해요.

킵얼라이브 & 타임아웃

죽은 연결을 감지하기 위한 구성 가능한 킵얼라이브 간격 및 최대 횟수예요. SSHOptions를 통한 연결 및 읽기 타임아웃이에요. Rekey()를 통한 자동 재키잉 지원이에요.

포트 포워딩

OpenDirectTCPIP를 사용한 로컬-원격 터널링이에요. RequestForwarding 및 CancelForwarding을 사용한 원격-로컬 포워딩이에요. 암호화된 SSH 연결을 통해 모든 TCP 트래픽을 터널링해요.

다양한 이벤트

수신 데이터를 위한 OnSSHChannelData, 명령 결과를 위한 OnSSHChannelExitStatus, 서버 배너를 위한 OnSSHAuthBanner, 오류 처리를 위한 OnSSHError예요. 완전한 이벤트 기반 아키텍처예요.

SFTP 클라이언트 — TIdSFTPClient

SSH를 통한 안전한 파일 전송이에요. 진행 상황 추적 및 전체 속성 지원으로 원격 파일 및 디렉터리를 업로드, 다운로드, 관리해요.

안전한 파일 작업

TIdSFTPClient는 TIdSSHClient 위에 구축되어 SFTP 서브시스템을 자동으로 처리해요. 모든 일반적인 파일 작업을 위한 고수준 API를 제공해요 — SSH 채널이나 SFTP 프로토콜을 수동으로 관리할 필요가 없어요.

  • Get / Put — 경로 또는 스트림으로 파일 다운로드 및 업로드
  • ListDirectory — 파일 속성과 함께 원격 디렉터리 내용 목록 표시
  • Delete / Rename — 원격 파일 및 디렉터리 관리
  • MakeDirectory / RemoveDirectory — 폴더 생성 및 제거
  • OnSFTPProgress — 전송된 바이트, 전체 크기, 취소 지원으로 전송 진행률 추적
SFTP_Example.pas
var
  SFTP: TIdSFTPClient;
  Items: TIdSFTPDirectoryItems;
  i: Integer;
begin
  SFTP := TIdSFTPClient.Create(nil);
  try
    SFTP.Host := 'sftp.example.com';
    SFTP.Authentication.Username := 'admin';
    SFTP.Authentication.PrivateKeyFile :=
      'C:\Keys\id_rsa';
    SFTP.Connect;

    // Upload a file
    SFTP.Put('C:\local\report.pdf',
      '/remote/reports/report.pdf');

    // List directory
    Items := SFTP.ListDirectory('/remote/reports');
    for i := 0 to Items.Count - 1 do
      Memo1.Lines.Add(Items[i].FileName);

    // Download a file
    SFTP.Get('/remote/data.csv',
      'C:\local\data.csv');

    SFTP.Disconnect;
  finally
    SFTP.Free;
  end;
end;

파일 전송

Get()는 원격 파일을 로컬 경로 또는 TStream으로 다운로드해요. Put()는 로컬 경로 또는 TStream에서 업로드해요. 최적의 처리량을 위해 SFTPBufferSize를 통해 버퍼 크기를 구성할 수 있어요. OnSFTPProgress는 전송된 바이트, 전체 크기, 취소 플래그와 함께 전송 중에 발생해요.

디렉터리 작업

ListDirectory()는 각 항목의 파일 이름, 크기, 권한, 타임스탬프, 유형과 함께 TIdSFTPDirectoryItems를 반환해요. 폴더 관리를 위한 MakeDirectory() 및 RemoveDirectory()예요. GetCurrentDirectory()는 원격 작업 경로를 반환해요.

파일 속성

Stat() 및 LStat()은 크기, 권한, UID/GID, 타임스탬프를 검색해요. SetStat()은 원격 속성을 수정해요. 빠른 확인을 위한 FileExists(), DirectoryExists(), FileSize()예요. Symlink() 및 ReadLink()를 통한 심볼릭 링크 지원이에요.

문자열 도우미

GetFileAsString()은 원격 파일을 Delphi 문자열로 직접 읽어요. PutFileFromString()은 원격 파일에 문자열을 써요. RealPath()는 상대 경로 또는 심볼릭 경로를 서버의 절대 위치로 해석해요.

SSH 인증

TIdSSHClient에서 모든 SSH 인증을 상속해요: 비밀번호, 공개 키(RSA, ECDSA, ED25519), 키보드-인터랙티브. Authentication 속성을 통해 자격 증명을 설정해요. 서버 검증을 위한 OnSSHHostKey 이벤트예요.

이벤트 & 진행 상황

OnSFTPProgress는 전송을 중단하기 위한 취소 플래그와 함께 전송된 바이트 및 전체 크기를 추적해요. OnSFTPError는 오류 코드와 메시지를 제공해요. 상태 업데이트를 위한 OnSFTPStatus예요. OnSFTPDirectoryList는 디렉터리 목록이 완료되면 발생해요.

Indy 컴포넌트를 업그레이드하세요

sgcIndy를 무료로 다운로드하고 애플리케이션에 최신 TLS 지원을 추가해 보세요.