클라이언트 및 서버에 대한 공개 키 인증을 통해 SFTP 설정 및 확인
환경
- 윈도우 (창)
-
- 윈도우 10 프로
- 윈도우 서버 2019
- 윈도우 7
- 윈도우 서버 2012 R2
- 오픈시
-
- 7.7p1
- 8.1p1 - 베타
※ 다른 버전에서는 작동하지만 확인되지 않았습니다.
처음에
마지막으로 SFTP 서버를 설정하여 암호 인증을 통해 파일을 보내고 받을 수 있는지 확인합니다. 이번에는 Sftp가 공개 키 인증을 사용하여 파일을 보내고 수신합니다.
사전 준비
- 클라이언트에 OpenSSH 클라이언트가 설치되어 있습니다.
- 서버에 OpenSSH 서버가 설치되어 있습니다.
- 서버가 OpenSSH 서비스를 시작하고 포트(22)가 해제됩니다.
클라이언트에서 개인 및 공용 키 만들기
클라이언트에 로그인합니다. 개인 및 공용 키도 서버 측에서 만들 수 있지만 개인 키는 클라이언트이고 공개 키는 서버에서 유지됩니다. 클라이언트 측에서 만듭니다.
관리자 권한으로 PowerShell을 시작합니다.
파일을 만들고, CD 명령이 있는 폴더로 이동하고, 다음 명령을 입력합니다.
ssh-keygen -t rsa -f id_rsa
당신은 키에 암호 (암호)를 넣을 수 있으므로 필요한 경우 넣어주세요.
키가 성공적으로 생성되면 다음과 같이 폴더에 공개 및 개인 키가 만들어집니다. "id_rsa"는 개인 키이며 "id_rsa.pub"이 공개 키입니다.
서버에 공개 키 배치
서버에 대한 SFTP 계정으로 Windows에 로그인합니다.
생성된 공개 키 "id_rsa.pub"을 서버의 다음 폴더에 배치하십시오. 「. "ssh" 폴더가 없는 경우 폴더를 작성하십시오. 또한 파일 이름을 "authorized_keys"로 변경합니다. (<> 로그인한 사용자 이름으로 SFTP로 바꿉니다.
- C:\사용자\< 사용자 이름>\.ssh
"관리자" 또는 SFTP 사용자가 있는 사용자만 이 파일에 액세스할 수 있어야 합니다. 다른 사용자가 액세스할 수 있는 경우 Sftp 연결이 항상 실패합니다. 예를 들어 NG에는 권한에 추가된 사용자 또는 모든 사용자가 있습니다.
이 예제에서는 ". "ssh" 폴더의 액세스 권한은 "그룹:SYSTEM", "그룹: 관리자", "사용자: sftptest"입니다. 권한을 제거할 수 없는 경우 권한 상속을 사용하지 않도록 설정합니다.
서버에서 공개 키 인증 사용
관리자 권한 사용자와 서버에 로그인한 다음 다음 폴더를 엽니다.
- C:\프로그램데이터\ssh
"sshd_config"이라는 파일이 있으므로 파일을 복사하여 파일 이름을 "sshd_config_default"로 변경하고 백업을 설정합니다.
관리자 권한으로 시작된 텍스트 편집기에서 "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 서버를 다시 시작합니다.
공개 키 인증을 통해 클라이언트로부터 파일 보내기 및 수신
SFTP를 실행하는 사용자만 액세스할 수 있는 폴더에 SFTP와 연결하기 전에 만든 개인 키 "id_rsa"를 배치합니다. 다른 사용자가 액세스할 수 있는 폴더에 배치하면 sftp 연결이 실패합니다. 특히 폴더에 사용자와 모든 그룹에 대한 사용 권한이 있는 경우 NG입니다.
기본적으로 다음 폴더에 넣으면 경로가 자동으로 참조되므로 권장됩니다.
- C:\사용자\< 사용자 이름>\.ssh
클라이언트의 ". "ssh" 폴더의 액세스 권한은 "그룹:SYSTEM", "그룹: 관리자", "사용자: < 로그인 사용자 >"입니다.
개인 키를 사용하여 sftp에 액세스하려면 명령을 다음과 같이 입력합니다(<> 대체하십시오.) 암호를 설정한 경우 암호도 입력합니다.
sftp -i id_rsa <ユーザー名>@<サーバー名>
로그인이 성공적으로 완료되면 로그인한 사용자의 표시로 전환됩니다.
dir 명령으로 로그인할 수도 있는지 확인할 수도 있습니다.
이제 "test3.txt"라는 파일을 준비했으니 풋커로 파일을 보냅니다.
put c:\temp\test3.txt
서버 측 C:\Users\sftptest 폴더를 보면 test3.txt 파일이 전송되는 것을 볼 수 있습니다.
클라이언트에서 가져옵니다.
get test3.txt c:\temp\test4.txt
파일을 얻을 수 있었는지 확인할 수 있었습니다.
요약
공용 키 인증을 사용하여 SFTP에서 파일을 보내고 받을 수 있었습니다. 공용 키를 사용하면 서버 측에서 암호를 알 수 없습니다. 그것은 당신이 암호 인증보다 더 안전하게 파일을 교환 할 수 있습니다.