400개가 넘는 서버에 SSH 인증서를 설치하는 방법은 무엇입니까?

400개가 넘는 서버에 SSH 인증서를 설치하는 방법은 무엇입니까?

이러한 서버에서 작업을 수행할 때 비밀번호를 입력하지 않으려면 SSH 인증서를 원격 서버에 업로드해야 합니다.

ssh-copy-id CptBartender@remote

이제... 해당 인증서를 400개 이상의 서버에 업로드해야 하며 비밀번호를 여러 번 입력/붙여넣지 않는 방법을 찾으려고 노력 중입니다.

질문: Windows에서 MinGW를 사용하여 이를 어떻게 자동화할 수 있습니까? Cygwin은 지옥의 거대한 기업 방화벽 뒤에 있는 것처럼 보이기 때문에 선택 사항이 아닐 가능성이 높습니다.

지금까지 나는:

  1. 모든 원격을 반복하는 스크립트를 작성했지만 모든 원격에 대해 비밀번호를 묻습니다.
  2. yes아무 소용없이 비밀번호를 전달하려고 시도했습니다.
  3. 에 대해 읽었 expect지만 MinGW에서 작동하게 하는 방법을 찾지 못했습니다.
  4. 읽어보기 sshpass- 같은expect

시도해 보았지만 AutoIt더 좋은 방법이 있을 것입니다...

답변1

PuTTY는 plink암호를 명령줄 매개변수로 받아들일 수 있습니다. 와 직접적으로 동등한 것은 없지만 ssh-copy-id수동으로 명령을 실행하는 등 쉽게 스크립트로 작성할 수 있습니다.

plink foo@bar -pw baz "mkdir -p ~/.ssh && echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys"

...또는 pscp.


또한 expectWindows에서 작동하지 않는다면 400개의 Linux 서버 중 하나에서 실행할 수 있을까요?

(또한 숫자가 주어지면 LDAP에서 키를 가져오거나 AD/Kerberos를 사용해야 할 수도 있습니다. 최신 OpenSSH 버전에는 더 이상 타사 패치가 필요 없이 LDAP 통합을 위한 후크가 있습니다.)

답변2

위에서 언급한 대로 Putty plink 도구를 찾을 수 있습니다. 또는 나중에 Puppet, Ansible 또는 Chef와 같은 구성 관리 시스템 중 하나를 사용하는 것을 고려해 볼 수도 있습니다. 이들 중 하나를 사용하여 즉시 모든 서버에 일부 인증서를 추가할 수 있습니다.

서버 번호를 찾고 있는 중이라면 진지하게 생각해 보아야 할 것 같습니다. 사용자 관리, 파일 및 디렉터리 관리, 소프트웨어를 포함한 대부분의 일상적인 서버 관리 작업에 사용할 수 있습니다.

관련 정보