SFTP 연결을 사용하여 EC2 Linux 인스턴스에 연결할 때 발생하는 문제는 어떻게 해결하나요?

최종 업데이트 날짜: 2021년 5월 4일

보안 파일 전송 프로토콜(SFTP) 연결을 사용하여 내 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 연결할 수 없습니다. 또는 [“원격 readdir 권한 거부됨(remote readdir Permission denied)”]이라는 오류가 표시됩니다. 이 문제를 해결하려면 어떻게 해야 하나요?

간략한 설명

SFTP 연결을 통해 EC2 인스턴스에 연결하지 못하는 데는 여러 가지 이유가 있습니다. 다음은 일반적인 연결 문제에 대한 문제 해결 단계입니다.

  • 인스턴스가 SSH 연결 사전 조건을 충족하는지 확인합니다.
  • 상세 메시징이 켜진 상태로 인스턴스에 로그인하여 오류를 식별합니다.
  • 인증 및 시스템 로그에 오류가 있는지 검토합니다.
  • SSHD 구성 파일에 SFTP용 하위 시스템이 구성되어 있는지 확인합니다.
  • [원격 readdir 권한 거부됨(remote readdir Permission denied)] 오류를 해결합니다.

해결 방법

인스턴스가 SSH 연결 사전 조건을 충족하는지 확인

SFTP는 SSH 위에서 작동합니다. 인스턴스가 모든 SSH 연결 사전 조건을 충족하는지 확인합니다. 사전 조건 목록은 SSH를 사용하여 Linux 인스턴스에 연결을 참조하세요.

상세 메시징이 켜진 상태로 인스턴스에 로그인하여 오류 식별

다음은 일반적인 오류 메시지입니다.

  • [연결 시간 초과(Connection timed out)] 또는 [연결 거부됨(Connection refused)]
  • [사용 권한 거부됨(Permission denied)] 또는 [인증 실패(Authentication failed)]
  • [서버에서 키 거부(Server refused our key)]

상세 메시징이 켜진 상태로 인스턴스에 로그인하는 방법과 이러한 오류 및 기타 SSH 관련 오류를 해결하는 방법에 대한 자세한 내용은 SSH를 사용하여 Amazon EC2 Linux 인스턴스에 연결하는 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

EC2 직렬 콘솔을 활성화한 경우 이 콘솔을 사용하여 지원되는 Nitro 기반 인스턴스 유형의 문제를 해결할 수 있습니다. 직렬 콘솔을 사용하면 부팅 문제, 네트워크 구성 및 SSH 구성 문제를 해결할 수 있습니다. 직렬 콘솔은 작동 중인 네트워크 연결 없이 인스턴스에 연결됩니다. Amazon EC2 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 직렬 콘솔에 액세스할 수 있습니다.

직렬 콘솔을 사용하기 전에 계정 수준에서 액세스 권한을 부여합니다. 그런 다음 IAM 사용자에게 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 정책을 생성합니다. 또한 직렬 콘솔을 사용하는 모든 인스턴스에는 암호 기반 사용자가 한 명 이상 포함되어야 합니다. EC2 직렬 콘솔 구성에 대한 자세한 내용은 EC2 직렬 콘솔에 대한 액세스 구성을 참조하세요.

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

인증 및 시스템 로그에서 오류 검토

RHEL 및 Fedora 인증 로그:

$ sudo less /var/log/secure

RHEL 및 Fedora 일반 시스템 로그:

$ sudo less /var/log/messages

Debian 및 Ubuntu 인증 로그:

$ sudo less /var/log/auth.log

Debian 및 Ubuntu 일반 시스템 로그:

$ sudo less /var/log/syslog

SSHD 구성 파일에 SFTP용 하위 시스템이 구성되어 있는지 확인

SSHD 구성 파일에 SFTP용 하위 시스템이 구성되어 있고 sftp-server용 공유 객체 파일이 해당 디렉터리에 있는지 확인합니다. SFTP 하위 시스템이 누락되어 SFTP 연결이 닫히는 경우 로그에 채널 0 오류에서 하위 시스템 요청 실패(subsystem request failed on channel 0) 오류가 표시될 수 있습니다.

RHEL 및 Fedora 기반 배포판:

$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem sftp    /usr/libexec/openssh/sftp-server
$ sudo ls -l /usr/libexec/openssh/sftp-server
-rwxr-xr-x. 1 root root 100784 Jun 26  2019 /usr/libexec/openssh/sftp-server

Debian 및 Ubuntu 기반 배포판:

$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem    sftp    /usr/lib/openssh/sftp-server
$ sudo ls -l /usr/lib/openssh/sftp-server
-rwxr-xr-x 1 root root 105608 Mar  4  2019 /usr/lib/openssh/sftp-server

자세한 내용은 Linux 매뉴얼 페이지의 sshd_config에 있는 하위 시스템 섹션을 참조하세요.

원격 readdir 권한 거부 오류 해결

[원격 readdir 권한 거부됨(remote readdir Permission denied)] 오류는 SFTP 연결을 시도하는 사용자에게 올바른 권한이 없음을 나타냅니다. 대상 디렉터리로 전환하려면 사용자에게 최소한 읽기 및 실행 권한이 있어야 합니다.

다음 명령을 사용하여 사용자에게 대상 디렉터리에 액세스할 수 있는 권한이 있는지 확인합니다.

ls -ldZ /directory

다음 명령을 사용하여 사용자 액세스를 제한하는 ACL(액세스 제어 목록) 권한을 확인합니다.

getfacl /directory

다음 명령을 사용하여 SELinux가 사용되는지 확인합니다.

getenforce

SELinux가 사용되는 경우 /var/log/audit/audit.log 또는 /var/log/audit.log에서 SELinux 컨텍스트를 기반으로 하는 권한 거부 오류가 있는지 검토합니다


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?