먼저 RSA 키를 생성하기 위해 스크립트를 사용하고 있기 때문에 rsa 키를 사용해 보았지만 처음에는 새로 생성된 인증 키를 전달하기 위해 원격 시스템에 연결해야 했습니다. 내가 하고 있는 일은 미리 만들어진 키를 갖는 것이지만, 이 모든 기계에 대한 키를 얻는 더 쉬운 방법을 원합니다.
문제는 다음과 같습니다. 100개가 넘는 컴퓨터에 연결하고 공개 키 파일을 전달하고 권한을 설정하고 키 인증을 켜야 합니다. 이제 두 줄, 즉 전송을 위한 scp 명령과 권한을 설정하고 키 인증을 다시 켜는 ssh 명령으로 이를 수행할 수 있습니다. 그러나 실제로는 각 컴퓨터에 대해 두 번씩 비밀번호를 요구합니다. 이러한 키가 필요한 시스템이 100개가 넘으므로 비밀번호를 다시 입력할 필요가 없으며 이 비밀번호를 200번 입력하고 싶지도 않습니다.
연결 중에 비밀번호를 한 번만(기술적으로는 두 번) 삽입할 수 있는 방법이 필요합니다. 스크립트가 실행되는 동안 변수에 비밀번호를 저장한 다음 연결이 설정되고 공개 키가 모든 컴퓨터에 전송되면 비밀번호를 완료할 수 있기를 원합니다.
아이디어?
편집: 언급하는 것을 잊어버렸습니다. 아무것도 설치할 수 없습니다. 그래서 나는 기대를 사용할 수 없습니다.
답변1
수행 중인 작업을 수행하기 위해 두 개의 연결을 만들 필요는 없습니다. 그것이 당신에게 효과가 없다고 가정하면 ssh-copy-id
, 여기 내가 오래 전에 (ssh-copy-id에 대해 알기 전) 작성한 스크립트에서 ssh에서 수행한 몇 가지 내용이 있습니다.
tar c $keys | ssh "$1" "set -e; cd \`mktemp -d\`; tar x; mkdir -p ~/.ssh; chmod go-w ~/.ssh; cat $keys >> ~/.ssh/authorized_keys; chmod go-w ~/.ssh/authorized_keys"
예, 엄청난 줄입니다. $keys
모든 공개 키의 이름을 저장합니다(기존 스크립트임을 기억하세요).
keys=''
for k in identity.pub id_rsa.pub id_dsa.pub; do
[ -e ~/.ssh/$k ] && keys="$keys $k"
done
요점은 ssh가 바이너리 보안 전송이므로 이를 사용하여 chmod 등을 실행하는 동일한 세션에서 파일을 전송할 수 있다는 것입니다.