본문 바로가기

Programing/.NET

[C#]SFTP 파일 업로드

 

SFTP(Secure File transfer protocol) - SSH와 마찬가지로 전송시 암호화시켜서 전송을 하게 되는데 그 중에 FTP와 같이 파일을 전송할 때 암호화 시켜서 전송합니다.

SSH에 부가적으로 있는 기능들 중 하나의 기능입니다. FTP와 같은 역할을 하지만, 사용하는 포트는 FTP 포트(기본 21포트) 가 아닌 SSH 접속시 사용하는 포트를 사용하고, SSH 접속 계정으로 로그인 할 수 있는 FTP 입니다.

 

SFTP 장점

  • SFTP는 하나의 연결만 필요하며 데이터 연결이 필요하지 않다.
  • 연결이 안전하게 보호된다.
  • 프로토콜에서 제공하는 추가 기능에는 파일 잠금, 속성 조적, 권한 작업 및 더 많은 기능이 포함된다.

SFTP 단점

  • SSH 키의 유효성 검사 및 관리는 더복잡하다
  • 여러 공급업체의 소프트웨어 타이틀 간에 호환성 문제를 일으킬수있다
  • .NET 및 VCL 에는 기본적으로 SSH/SFTP 지원이 포함 되지 않는다.

 

SFTP 사용을위해  NuGet 패키지 관리자에서 SSH.NET 설치

 

 static void sFtpUpLoad()
        {

            string ftpPath = "";    //SFTP 연결주소
            string dirPath = "";    //디렉토리 경로
            string user = "";  	    //아이디
            string pwd = "";        //비밀번호
            string inputFile = "";  //전송할 파일
            int port = 22;          //SFTP 포트는 22번 

            try
            {
                using (var client = new SftpClient(ftpPath, port, user, pwd))
                {
                    client.Connect();
                    client.ChangeDirectory(dirPath);
                    if (client.IsConnected)  
                    {
                        //연결성공시 파일업로드
                        using (var fileStream = new FileStream(inputFile, FileMode.Open))
                        {
                            client.BufferSize = 4 * 1024; // bypass Payload error large files
                            client.UploadFile(fileStream, Path.GetFileName(inputFile));
                        }
                    }
                    else
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
        }

'Programing > .NET' 카테고리의 다른 글

[C#] Azure BlobStorage 파일 업로드  (0) 2021.11.11
[C#] BarcodeLib 바코드 생성  (0) 2021.11.10
[C#] AES256(AES/CBC/PKCS5Padding) 암/복호화  (0) 2021.03.14
[C#] RestSharp 으로 HTTP/HTTPS 통신  (0) 2020.07.24
[C#] Log파일 생성  (0) 2019.07.30