클라이언트 및 서버에 대한 공개 키 인증을 통해 SFTP 설정 및 확인

페이지 생성 날짜 :

환경

윈도우 (창)
  • 윈도우 10 프로
  • 윈도우 서버 2019
  • 윈도우 7
  • 윈도우 서버 2012 R2
오픈시
  • 7.7p1
  • 8.1p1 - 베타

※ 다른 버전에서는 작동하지만 확인되지 않았습니다.

처음에

마지막으로 SFTP 서버를 설정하여 암호 인증을 통해 파일을 보내고 받을 수 있는지 확인합니다. 이번에는 Sftp가 공개 키 인증을 사용하여 파일을 보내고 수신합니다.

사전 준비

  • 클라이언트에 OpenSSH 클라이언트가 설치되어 있습니다.
  • 서버에 OpenSSH 서버가 설치되어 있습니다.
  • 서버가 OpenSSH 서비스를 시작하고 포트(22)가 해제됩니다.

클라이언트에서 개인 및 공용 키 만들기

클라이언트에 로그인합니다. 개인 및 공용 키도 서버 측에서 만들 수 있지만 개인 키는 클라이언트이고 공개 키는 서버에서 유지됩니다. 클라이언트 측에서 만듭니다.

관리자 권한으로 PowerShell을 시작합니다.

image

파일을 만들고, CD 명령이 있는 폴더로 이동하고, 다음 명령을 입력합니다.

ssh-keygen -t rsa -f id_rsa

당신은 키에 암호 (암호)를 넣을 수 있으므로 필요한 경우 넣어주세요.

image

키가 성공적으로 생성되면 다음과 같이 폴더에 공개 및 개인 키가 만들어집니다. "id_rsa"는 개인 키이며 "id_rsa.pub"이 공개 키입니다.

image

image

서버에 공개 키 배치

서버에 대한 SFTP 계정으로 Windows에 로그인합니다.

생성된 공개 키 "id_rsa.pub"을 서버의 다음 폴더에 배치하십시오. 「. "ssh" 폴더가 없는 경우 폴더를 작성하십시오. 또한 파일 이름을 "authorized_keys"로 변경합니다. (<> 로그인한 사용자 이름으로 SFTP로 바꿉니다.

  • C:\사용자\< 사용자 이름>\.ssh

image

"관리자" 또는 SFTP 사용자가 있는 사용자만 이 파일에 액세스할 수 있어야 합니다. 다른 사용자가 액세스할 수 있는 경우 Sftp 연결이 항상 실패합니다. 예를 들어 NG에는 권한에 추가된 사용자 또는 모든 사용자가 있습니다.

이 예제에서는 ". "ssh" 폴더의 액세스 권한은 "그룹:SYSTEM", "그룹: 관리자", "사용자: sftptest"입니다. 권한을 제거할 수 없는 경우 권한 상속을 사용하지 않도록 설정합니다.

서버에서 공개 키 인증 사용

관리자 권한 사용자와 서버에 로그인한 다음 다음 폴더를 엽니다.

  • C:\프로그램데이터\ssh

"sshd_config"이라는 파일이 있으므로 파일을 복사하여 파일 이름을 "sshd_config_default"로 변경하고 백업을 설정합니다.

image

관리자 권한으로 시작된 텍스트 편집기에서 "sshd_config"을 엽니다.

공개 키 인증을 사용하도록 설정하려면 다음과 같이 변경합니다.

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

또한 기본적으로 암호 인증이 활성화되므로 비활성화하려면 다음과 같이 변경합니다.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

각 SFTP 계정에 대한 공개 키를 배치하고 싶으므로 다음 줄에 대해 설명하겠습니다.

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

각 SFTP 계정에 대한 루트 디렉토리를 지정하려면 다음 줄을 추가합니다. 이 지정 여부에 따라 클라이언트에서 폴더 경로를 지정하면 "C:\xxxxx" 또는 "/xxxxx" 형식으로 변경될 수 있습니다.

Match User <ユーザー名>
       ChrootDirectory <フォルダパス>

본보기

Match User TestUser
       ChrootDirectory C:\Users\TestUser

sshd_config 저장한 후 OpenSSH 서버를 다시 시작합니다.

image

공개 키 인증을 통해 클라이언트로부터 파일 보내기 및 수신

SFTP를 실행하는 사용자만 액세스할 수 있는 폴더에 SFTP와 연결하기 전에 만든 개인 키 "id_rsa"를 배치합니다. 다른 사용자가 액세스할 수 있는 폴더에 배치하면 sftp 연결이 실패합니다. 특히 폴더에 사용자와 모든 그룹에 대한 사용 권한이 있는 경우 NG입니다.

기본적으로 다음 폴더에 넣으면 경로가 자동으로 참조되므로 권장됩니다.

  • C:\사용자\< 사용자 이름>\.ssh

클라이언트의 ". "ssh" 폴더의 액세스 권한은 "그룹:SYSTEM", "그룹: 관리자", "사용자: < 로그인 사용자 >"입니다.

개인 키를 사용하여 sftp에 액세스하려면 명령을 다음과 같이 입력합니다(<> 대체하십시오.) 암호를 설정한 경우 암호도 입력합니다.

sftp -i id_rsa <ユーザー名>@<サーバー名>

image

로그인이 성공적으로 완료되면 로그인한 사용자의 표시로 전환됩니다.

image

dir 명령으로 로그인할 수도 있는지 확인할 수도 있습니다.

image

이제 "test3.txt"라는 파일을 준비했으니 풋커로 파일을 보냅니다.

put c:\temp\test3.txt

image

서버 측 C:\Users\sftptest 폴더를 보면 test3.txt 파일이 전송되는 것을 볼 수 있습니다.

image

클라이언트에서 가져옵니다.

get test3.txt c:\temp\test4.txt

image

파일을 얻을 수 있었는지 확인할 수 있었습니다.

image

요약

공용 키 인증을 사용하여 SFTP에서 파일을 보내고 받을 수 있었습니다. 공용 키를 사용하면 서버 측에서 암호를 알 수 없습니다. 그것은 당신이 암호 인증보다 더 안전하게 파일을 교환 할 수 있습니다.