C#에서 Private Key(.pem이나 .ppk)파일을 이용하여 SFTP 연결을 성립하기 위한 방법을 공유합니다.
일단, ppk 파일을 사용한다는 가정 하에 진행하도록 하겠습니다. (pem 파일을 ppk 파일로 변환하는법은 여기를 클릭해주세요)
- C# 프로젝트의 nuget 검색을 통해 WINSCP 패키지를 설치해주세요.
- 이후, 아래 예제코드를 참고하여 프로그램을 작성하면 됩니다
예제 코드 :
using WinSCP; namespace SAMPLE { public partial class MainWindow : Window { private Session session; public MainWindow() { InitializeComponent(); //HostName, UserName SshPrivateKeyPath 변경할것 SessionOptions sessionOptions = new SessionOptions { Protocol = Protocol.Sftp, HostName = "HOST", UserName = "USERNAME", SshPrivateKeyPath = "PATH_TO_PPK_FILE", GiveUpSecurityAndAcceptAnySshHostKey = true }; session = new Session(); session.Open(sessionOptions); TransferOptions transferOptions = new TransferOptions(); //아래 두 옵션은 입맞에 맞게 수정해주세요. transferOptions.TransferMode = TransferMode.Automatic; transferOptions.OverwriteMode = OverwriteMode.Overwrite; //GetFiles 또는 PutFiles 사용 TransferOperationResult transferResult = session.GetFiles("호스트 파일 경로", "로컬 파일 경로"); if (transferResult.IsSuccess) { MessageBox.Show("다운로드 성공"); } else { MessageBox.Show("다운로드 실패"); } } } }