키의 비공개 부분이 없으면 실패하는 ssh-copy-id에 대한 효율적인 대안을 찾고 계십니까?

키의 비공개 부분이 없으면 실패하는 ssh-copy-id에 대한 효율적인 대안을 찾고 계십니까?

놀랍게도 ssh-copy-id키의 개인 부분이 없으면 이것이 실패하여 다른 키를 배포하는 데 사용할 수 없다는 것을 발견했습니다.

저는 이러한 키를 배포하는 안정적인 방법을 찾고 있으므로 두 번 실행해도 중복 항목이 생성되지 않아야 합니다.

답변1

이것을 시도해 보십시오(개행은 선택 사항):

cat ~/.ssh/id_rsa.pub |
ssh <REMOTE> "cat > tmp.pubkey ;
              mkdir -p .ssh ;
              touch .ssh/authorized_keys ;
              sed -i.bak -e '/$(awk '{print $NF}' ~/.ssh/id_rsa.pub)/d' .ssh/authorized_keys;
              cat tmp.pubkey >>.ssh/authorized_keys;
              rm tmp.pubkey"

<REMOTE>연결하려는 호스트 이름으로 바꾸십시오 . 또한 id_rsa.pub이름을 바 키로 변경하세요.

이 접근 방식이 적용되는 사례는 다음과 같습니다.

  1. 원격 호스트에 .ssh디렉터리가 없을 수 있습니다.
  2. authorized_keys파일이 존재하지 않을 수 있습니다.
  3. 존재하는 경우 authorized_keysSSH 공개 키를 교체/업데이트/추가하려는 경우 중복 항목 없이 작동합니다. 동일한 설명이 포함된 항목이 이미 존재하는 경우 이 스크립트가 해당 항목을 대체합니다.

관련 정보