ssh 키 확인에 암호가 있습니다


8

SSH 키를 사용하여 다른 서버의 계정에 액세스 할 수있는 많은 사용자가 있습니다. 현재 ssh 공개 키를 수집하여 올바른 서버의 올바른 계정으로 배포하는 스크립트가 있습니다.

내가하고 싶은 것은 공개 키를 수락하고 배포하기 전에 스크립트에서 주어진 사용자 ssh 키에 암호가 있는지 확인하는 것입니다.

나는 사용하는 것과 같이, 여러 가지를 시도했습니다 ssh-agentssh-add때 다음 문제 온다 ssh-add암호를 요구됩니다.

openssl암호를 확인하는 것과 같은 것을 얻는 방법이 1있습니까, 키에 암호가 있는지의 리턴 코드로 약간 실패 합니까?

감사!


당신은 요구하는지 여부를 명확히 할 수 있는 암호를하거나 하지 때문에 어떤 이유와 - 그것을 가지고?
user1686 년

grawity : 내 요구 사항은 사용자가 ssh 키에 암호를 설정하도록하는 것입니다. 암호가있는 키만 다른 서버에 배포됩니다.
피터 파머

답변:


11

키 파일이 암호를 사용하면 "ENCRYPTED"라는 단어가 추가 된 "Proc-Type :"속성이 설정됩니다.

그래서, 당신은 키 파일 사용을 통해 그것을 실행하여 암호 문구를 결정 수 findgrep는 문자열 'ENCRYPTED을'이 있는지.

# list keyfiles that USE a passphrase
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -exec grep -q "ENCRYPTED" {} \; -print

암호 가 있는 파일 목록을 인쇄합니다 . 그런 다음 모든 키 파일 목록과 비교하여 암호를 사용하지 않는 키 파일을 찾아 낼 수 있습니다. 모든 키 파일의 목록은 -exec다음과 같이 매개 변수를 생략 하여 얻을 수 있습니다 .

# list all keyfiles
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -print

새로운 SSH 키 형식으로는 더 이상 사용할 수 Proc-Type없으며, 암호화되어 있어도 헤더는 파일에 기록되지 않습니다.
Oneiroi '
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.