다수의 호스트에서 인증 키 파일 권한을 수정하는 쉘 스크립트

다수의 호스트에서 인증 키 파일 권한을 수정하는 쉘 스크립트

키를 시스템에 푸시하기 전에 (hosts.txt)에 연결하고 인증 키 파일에 대한 권한을 업데이트해야 하는 시스템이 많습니다.

키를 푸시할 수 있는 파일을 상속하고, 사용자 이름/비밀번호 집합으로 22로 응답한 호스트의 서브넷을 확인하고, ssh가 우리 키와 연결할 수 있는지 확인했습니다. 대부분은 Expect로 작성되었습니다.

이제 해당 목록을 가져와 필요에 따라 서브넷 스캔에 응답하는 호스트에 권한(0700 또는 0600?)을 푸시해야 키와 함께 시스템에 키를 푸시할 수 있습니다.

Host.txt 부분을 읽는 동안 do/while을 알아낼 수 있습니다. 내가 막힌 부분은 chmod 0700 ~/.ssh/authorized_key 파일을 실행하여 ssh를 대상 시스템에 프로그래밍하는 것입니다(sshpass를 사용하거나 비밀번호 자동화를 기대함).

나는 실패 시 몇 가지 반환 코드를 보고 싶습니다. (이전 시스템 관리자는 때때로 루트를 ~/.ssh 디렉터리의 소유자로 만들거나 심지어 우리가 조정 중인 표준 사용자의 ~ 디렉터리로 만들곤 합니다.

user@host 를 수동으로 SSH로 연결할 수 있습니다. 사용자(및 비밀번호)는 동일하게 유지되며 로드할 호스트.txt 파일에 따라 호스트만 변경됩니다. 수동으로 수백 번 수행하는 것을 피하고 싶습니다. 이 작업이 완료되면 Pushkey.exp를 사용하여 수정된 모든 시스템을 자동으로(수행/동시에) 업데이트할 수 있습니다.

이것이 내가 지금까지 얻은 것입니다:

#!/bin/bash
# Permissions fix authorized_keys, using bash
#
# Usage: ./manage_host.sh
# -----------------------------------------------------------------------------
file="/home/user1/bin/hosts.txt"
while IFS= read -r host
do

        expect -f
                spawn ssh remoteuser@$host
                expect "assword:"
                send "ourpasswordhere\r"
        if [ ! -d "~/.ssh"]; then mkdir -p ~/.ssh fi

        if [ ! -f "~/.ssh/authorized_keys."]; then touch ~/.ssh/authorized_keys. fi

        chown -R remoteuser:remoteuser ~/.ssh
        # store exit status of chown
        status=$?

        # Error checking subroutine to post failures on manager server
        if [ $status -ne 0 ]; then echo "'$host' ownership could not be set to svcsis." >> results.txt; fi

        chmod 600 ~/.ssh/authorized_keys

        exit

        ./push_key.exp remoteuser@$host

        ./keycheck.sh $host >>response.txt
done

관련 정보