비밀번호가 설정되었으므로 이제 여러 서버에 로그인하여 모든 서버에서 명령을 실행하고 싶습니다. 나는 이것을 시도했다
#! /bin/bash
for HOST in $(cat servers.txt ) ; do
ssh -o $HOST "uname -a" PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no
done
그러나 이것은 도움이 되지 않습니다.
답변1
정식 순서를 시도해 보겠습니다.
ssh -o PubkeyAuthentication=no \
-o PreferredAuthentications=keyboard-interactive,password \
$HOST "uname -a"
PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no
귀하의 명령을 사용하면 ssh는 이를 원격 호스트로 보낼 매개변수로 해석합니다 .
SSH를 사용하여 원격 호스트에 연결하려면 주로 3가지 솔루션을 사용합니다.
1) 리모컨 비밀번호
간단하고 간단합니다. 매번 원격 호스트의 비밀번호를 입력합니다.
장점: 설정이 필요 없음
단점: 매번 비밀번호를 입력해야 함
2) 비밀번호 없는 키 쌍
비밀번호 없이 개인/공개 키 쌍을 생성하고 원격 계정에 공개 키를 배포해야 합니다.
장점: 비밀번호가 필요하지 않음
단점: 키를 도난당할 수 있음
3) 비밀번호로 보호된 키 쌍
비밀번호로 개인/공개 키 쌍을 생성하고 원격 계정에 공개 키를 배포해야 합니다. 키를 메모리에 로드하거나( ssh-agent
) 매번 비밀번호 키를 입력할 수 있습니다.
장점: 키를 도난당할 수 없음
단점: 비밀번호 입력 또는 로드/언로드 필요
어떤 연결을 사용하고 있는지 찾을 수 없습니다. ssha host
귀하의 댓글 ""에 있는 "a"는 철자 오류인 것 같습니다 . "passphrase"라는 단어를 사용했기 때문에 개인 키에 암호 문구를 설정했다고 가정합니다. 이것이 사용된 표현이기 때문입니다.
내 다음 추측은 당신이 그것을 시도하는 것입니다
ssh $HOST uname -a