개인 키를 사용하여 새 컴퓨터에 비밀번호 없는 SSH를 설정하는 방법

개인 키를 사용하여 새 컴퓨터에 비밀번호 없는 SSH를 설정하는 방법

비밀번호 없는 SSH가 100 source1개가 넘는 서버에 설정되어 있다고 말하는 기계가 있습니다 remote1.remote2remote100

이제 다른 서버에 비슷한 비밀번호 없는 SSH 설정을 설정해야 하며 공개 키를 100개 서버 전체의 Authorized_keys 파일 source2에 복사하고 싶지 않습니다 .source2

source1비슷한 것을 설정하기 위해 서버의 개인 키를 사용할 수 있습니까 source2? 이 목표를 달성하는 방법은 무엇입니까? 방법 중 하나라고 들었는데 ssh-agent, 그 단계에 대해서는 잘 모르겠습니다.

답변1

모든 리모컨에 자체 루트(예: 다른 /root디렉터리)와 자체 authorized_keys파일이 있는 경우 해당 파일을 모두 편집하여 새 키를 추가해야 합니다.

for remote in $(seq 100); do 
    cat public_key.pub | ssh "remote$remote" tee -a .ssh/authorized_keys
done

그러나 source1의 개인 키를 source2로 보낼 수도 있습니다. 이렇게 하면 두 컴퓨터 모두 동일한 키 쌍을 사용하게 됩니다(모든 리모컨이 등록됨). 나는 이것이 어떤 유형의 충돌도 일으키지 않는다고 생각하지만 두 개의 키를 갖는 것이 나에게는 더 자연스러워 보입니다. 사실은 모든 컴퓨터가 동일한 네트워크에 있고 동일한 사용자가 관리할 가능성이 높기 때문에 하나의 손상된 키가 전체 시스템을 손상시킬 수 있습니다. 따라서 두 개를 갖는다고 해서 보안이 강화되는 것은 아닙니다(어딘가에 하나라도 루트가 되기에는 충분하기 때문입니다).

답변2

취하는 접근 방식은 특정 시나리오에 따라 다릅니다. 모든 서버의 사용자가 원격 호스트에 새 키를 추가할 때 인증에 사용할 수 있는 키를 이미 가지고 있는 경우 가장 좋습니다 authorized_keys. 그렇지 않으면 각 호스트에 대해 비밀번호를 입력해야 합니다.

SSH 키를 원격 시스템에 자동으로 복사하는 가장 쉬운 방법은 를 사용하는 것입니다. 이를 통해 호출되는 서버가 ssh-copy-id있는 경우 다음과 같이 수행할 수 있습니다.remote1remote100

for server in $(seq -f 'remote%.0f' 1 100); do
    ssh-copy-id -i ~/.ssh/id_rsa "$server"
done

그러면 자동으로 id_rsa공개 키를 모든 서버에 순차적으로 SSH로 연결하고 공개 키를 authorized_keys. 이것이 서버에 있는 유일한 키인 경우 프로그램이 ssh-copy-id실제로 서버에 SSH를 통해 연결해야 하므로 이를 추가하기 위한 비밀번호를 묻는 메시지가 표시됩니다.

추가로 자동화하는 한 가지 방법은 비밀번호를 사용한 자동 로그인과 같은 기능을 사용하는 것입니다 expect. OpenSSH의 ssh 클라이언트에는 비밀번호를 지정하는 명령줄 옵션이 없거나 sshpass.

관련 정보