![로그인하지 않은 쉘 사용자 간에 SCP를 수행하는 방법은 무엇입니까?](https://linux55.com/image/173971/%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EC%89%98%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EA%B0%84%EC%97%90%20SCP%EB%A5%BC%20%EC%88%98%ED%96%89%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
이 주제에 대해 이전에 질문한 내용을 살펴봤지만 내가 찾고 있는 내용과 일치하는 항목을 찾지 못했습니다.
상상하다:
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