새 서버에 여러 SSH 키 추가

새 서버에 여러 SSH 키 추가

SSH 키를 복사하려면 다음을 수행할 수 있다는 것을 알고 있습니다.

ssh-copy-id [email protected]

하지만 새 서버를 배포할 때는 여러 SSH 키를 승인해야 합니다.여러 SSH 키를 인증하기 위해 생활을 더 쉽게 만들 수 있는 방법이 있습니까?

답변1

맨페이지를 읽어보면 ssh-copy-id로그인이 허용되지 않는 ssh-agent의 모든 키를 복사해야 하는 것 같습니다. 따라서 모든 키 쌍을 ssh-agent를 사용하여 로드 ssh-add하고 그 후에 사용하십시오 ssh-copy-id.

그래도 작동하지 않으면 다음에 대한 키를 지정해 볼 수 있습니다 ssh-copy-id.

for i in ~/.ssh/*.pub; do
  ssh-copy-id -i $i user@host
done

그래도 문제가 해결되지 않으면 다음과 같은 것을 살펴보십시오.

# sshkeys.yml
---
- hosts: all
  remote_user: foo
  tasks:
  - authorized_key:
      user: foo
      key: '{{lookup("file", item)}}'
    with_items:
    - id_rsa.pub
    - id_rsa_alternate.pub

다음과 같이 사용하세요:

ansible-playbook -i remote.host.com, -k sshkeys.yml

이 경로를 선택하려면 Ansible에 대해 자세히 읽어보세요.

답변2

소개

이 방법은 22뿐만 아니라 모든 포트가 있는 SSH 서버에 대해 모든 사용자에게 키를 복사할 수 있으므로 SSH 복사 ID를 마일 단위로 능가합니다. 아, 그리고 Authorized_keys.org에 Authorized_keys 파일에 추가될 여러 키를 가질 수 있습니다. 서버에서. Authorized_keys.org에 한 줄에 하나의 SSH 공개 키가 있는지 확인하세요.

원하는 대로 이러한 선을 구성할 수 있는 방법에는 여러 가지가 있습니다. 이 cat | ssh cat방법이나 유사한 echo | ssh ssh cat방법은 원격 서버에 쓰기에 적합하므로 절대 잊지 말 것을 제안합니다 . cat SOMETHING | ssh SERVER "cat - > REMOTEFILE"또는 echo를 사용할 수 있으므로 echo "SOMETHING" | ssh SERVER "cat - > REMOTEFILE" 로컬에서 무언가를 읽은 다음 이를 쓰거나 다른 서버에 추가하는 완벽한 방법입니다. 이렇게 쓰거나 cat - > REMOTEFILE이렇게 덧붙이세요cat - >> REMOTEFILE

답변

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

또는

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

또한 SSH 키(Ssh 키 1개)가 있는 경우:

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

또는

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

그것은 모든 것을 이해하기에 충분할 것입니다.

더 많은 정보

참고: "루트" 사용에만 국한되지 않는다는 사실에 대한 아래 내 의견을 읽어보십시오. 여기에서 모든 부분이 수정 가능한 것을 볼 수 있습니다.

[input of ssh keys or keys (as long as new line sepearted)] | ssh -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"

보너스:SSH 서버는 비밀번호 로그인을 허용하지 않고 SSH 키만 허용하지만 더 많은 키에 대해 알리고 싶다고 가정해 보겠습니다.

  • [input of ssh keys or keys (as long as new line sepearted)] | ssh -i PRIVATE -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
  • [ssh 키 또는 키 입력(새 줄로 구분된 경우)]: 새 줄로 구분된 공개 키 또는 전체 공개 키(또는 여러 개의 공개 키의 에코)인 경우 1개 이상의 공개 키가 있는 파일의 cat일 수 있습니다. 공개 키는 새 줄로 구분되어 있는 한, "echo -e 'line1\nline2'"를 사용하여 echo로 새 줄을 구분할 수 있습니다.
  • 개인: SSH 서버가 특정 키만 허용하는 경우 SSH 키 인증만 구성되어 있고 공개 키가 있기 때문입니다. 그런 다음 해당 공개 키 키의 개인 키를 지정합니다.
  • USER: 연결하고 해당 키를 편집하려는 사용자입니다. 루트로 연결하는 경우(예:[이메일 보호됨]), 누구의 키에 "cat - >> /home/anyuser/.ssh/authorized_keys"를 추가하거나 루트 키에 "cat - >> /root/.ssh/autorized_keys"를 추가할 수 있습니다. 그러나 user1로 연결하면 user1의 키 "cat - >> /home/user1/.ssh/authorized_keys" 또는 더 간단히 "cat - >> ~/.ssh/authorized_keys"만 변경할 수 있습니다(이 마지막 키는 모든 사용자).
  • SERVER: 연결하려는 서버입니다. 이 경우에는 server.com
  • PORT: 서버에서 허용되는 SSH 서버 포트입니다. 일반적으로 포트는 22입니다. 포트가 22인 경우 기본값이므로 "-p 22"를 생략할 수 있습니다.
  • AUTHORIZEDKEY: Authorized_key의 위치입니다. 나는 이것을 USER 포인트에서 다루었습니다. 이는 "/root/.ssh/authorized_keys" 또는 "/home/user1/.ssh/authorized_keys" 또는 "~/.ssh/authorized_keys"입니다.

관련 정보