로그인하지 않은 쉘 사용자 간에 SCP를 수행하는 방법은 무엇입니까?

로그인하지 않은 쉘 사용자 간에 SCP를 수행하는 방법은 무엇입니까?

이 주제에 대해 이전에 질문한 내용을 살펴봤지만 내가 찾고 있는 내용과 일치하는 항목을 찾지 못했습니다.

상상하다:

System1과 System2라는 두 개의 Centos 시스템이 있습니다.

System1의 스크립트는 로그인하지 않은 셸 사용자(user1)를 사용하여 웹에서 파일을 다운로드하고 이를 사용자의 홈 디렉터리(/home/user1)에 저장합니다.

System2의 또 다른 스크립트는 로그인하지 않은 셸 사용자(user2)를 사용하여 system1에서 scp 파일을 읽고 일부 작업을 수행합니다.

이러한 사용자는 루트 사용자를 사용하여 두 시스템 모두에 스크립트를 설치할 때 생성되었습니다.

다음은 user1 및 user2를 생성하는 사양 파일의 조각입니다.

getent group user1>/dev/null || groupadd -r user1
getent passwd user1>/dev/null || \
    useradd -r -g blacklist -m -s /sbin/nologin \
    -c "the user is created as it downaloads the conent from web" user1
exit 0

도전:비밀번호 없는 scp를 수행하는 전통적인 방법은 키 쌍을 만들고 원격 시스템에 공개 키를 복사하는 것입니다. 하지만 로그인할 수 없는 경우 사용자별 키를 생성하여 원격 서버에 복사하려면 어떻게 해야 합니까?

이 요구 사항을 처리하는 좋은 방법을 알려주십시오.

답변1

복제를 위해 SCP 프로토콜을 사용하는 것은 RPM 패키지의 기능 요구 사항이고 SCP에는 기본 SSH 인증이 필요하므로 다음 옵션만 상상할 수 있습니다.

  • 생성된 RPM 패키지 내에 SSH 키 쌍을 하드코딩합니다. 이러한 키는 ssh-keygen섹션 내에서 호출 하여 생성할 수도 %build있고 미리 생성하여 소스 파일로 가져올 수도 있습니다. 이후에는 ~/.ssh/id_rsa및 와 같이 올바르게 설치할 수 있습니다 ~/.ssh/authorized_keys.

  • 사용자 비밀번호는 RPM 패키지 내에 하드코딩되어 있으며 sshpass에서 다운로드하는 데 사용됩니다 System2.

  • 호스트 기반 인증으로 user2인증되었습니다 . 이 섹션의 대체 명령을 System1호출하여 %post호스트 기반 인증을 활성화하고 그에 따라 구성 ~/.ssh/known_hosts~/.shosts보관할 수 있습니다.

각 대안에는 이점과 보안 문제가 있으며 가장 적합한 옵션은 환경 정책에 따라 다릅니다. 가장 좋은 답변을 선택할 수 없습니다.

어떻게든 인증 구성을 자동화 user2@System2하거나 System1패키지를 설치하는 사람에게 이를 수행하도록 요청하는 설치 후 메시지를 생성해야 합니다. 사실, 두 시스템 모두에 알려진 고유한 인증 데이터를 생성하고 복사하는 작업을 포함 System2하지 않는 신원 확인 외에는 대안이 없다고 생각합니다 .System1

관련 정보