본문 바로가기

Delphi/정보나누기

오라클 클라우드에 DB 구축하고 연결하기(SSH Tunnel)

오라클 클라우드는 보안으로 인해 DB에 Direct로 연결이 불가능 하며

접속을 하기 위해선 인증이 필요합니다.

 

Instance 생성 시 제공되는 Key로 SSH Tunnel을 이용하여

Direct로 DB연결을 해보았습니다.

 

- 테스트 DB : MariaDB

- 컴포넌트 : Devart SecureBridge

 

uses
  .., ScSSHClient, ScBridge, ScSSHUtils, ScUtils, ScSSHChannel;

 

procedure TForm1.Connect;
begin
  //MariaDB 접속정보
  FDConnection1.Params.Add('DriverID=MySQL');
  FDConnection1.Params.Add('Server=localhost'); //SSH Tunnel을 사용하기 때문에 localhost로 세팅
  FDConnection1.Params.Add('Port=3306');
  FDConnection1.Params.Add('Database=test');
  FDConnection1.Params.Add('Password=admin');
  FDConnection1.Params.Add('UserName=admin');

  ScSSHClient1.Authentication := atPublicKey;
  ScSSHClient1.HostKeyAlgorithms := 'ssh-rsa';
  ScSSHClient1.HostKeyName := 'Public IP'; //생성한 Instance의 Public IP
  ScSSHClient1.Port := 22;
  ScSSHClient1.User := 'Server UserName'; //Server의 UserName
  ScSSHClient1.KeyStorage := scFileStorage1; //프로그램 실행 시 scFileStorage 컴포넌트에 설정된 Path에 키파일(.key)이 있으면 자동으로 로드
  ScSSHClient1.PrivateKeyName := ScFileStorage1.Keys.Keys[0].KeyName;

  //로컬 포트와 서버 포트를 연결하고 발생하는 이벤트에 대하여 Direct 옵션이 False일 경우 자동으로 데이터 암복호화 및 교환
  ScSSHChannel1.Client := ScSSHClient1;
  ScSSHChannel1.DestHost := 'localhost';
  ScSSHChannel1.DestPort := 3306;
  ScSSHChannel1.SourcePort := 3306;

  try
    ScSSHClient1.Connect;   

    if ScSSHClient1.Connected then begin
      ShowMessage('SSHClient Connected.');

      ScSSHChannel1.Connect;

      if ScSSHChannel1.Connected then begin
        ShowMessage('SSHChannel Connected.');

        FDConnection1.Connected := True;
      end;
    end;
  except
    on E: Exception do begin
      ShowMessage(E.Message);
    end;
  end;
end;

 

procedure TForm1.ScSSHClient1ServerKeyValidate(Sender: TObject; NewServerKey: TScKey; var Accept: Boolean);
begin
  Accept := True;
end;
반응형