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