C#에서 Private Key를 이용한 SFTP 접속하기

C#에서 Private Key(.pem이나 .ppk)파일을 이용하여 SFTP 연결을 성립하기 위한 방법을 공유합니다.

일단, ppk 파일을 사용한다는 가정 하에 진행하도록 하겠습니다. (pem 파일을 ppk 파일로 변환하는법은 여기를 클릭해주세요)

  1. C# 프로젝트의 nuget 검색을 통해 WINSCP 패키지를 설치해주세요.
  2. 이후, 아래 예제코드를 참고하여 프로그램을 작성하면 됩니다

예제 코드 :

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("다운로드 실패");
			}
		}
	}
}