ssh-add는 .ssh 디렉토리에 모든 개인 키를 추가합니다.

ssh-add는 .ssh 디렉토리에 모든 개인 키를 추가합니다.

일상생활에서 꼭 필요한SSH나는 그들 모두에 대해 서로 다른 개인 키를 가지고 있습니다.

새 셸 세션을 시작하면 기본 id_rsa만 SSH 키체인에 추가됩니다. 계속 실행됩니다.

SSH 추가 ~/.ssh/*

그러나 다음과 같은 것을 추가하면~/.ssh/config

find/를 사용하여 grep이 작업을 어떻게 수행합니까?오직유효한 개인 키 파일을 추가하시겠습니까?

답변1

조금 복잡하지만:

for possiblekey in ${HOME}/.ssh/id_*; do
    if grep -q PRIVATE "$possiblekey"; then
        ssh-add "$possiblekey"
    fi
done

추가할 수도 있습니다.모두열쇠는 ~/.ssh/config자체 IdentityFile지침 에 따라 제공됩니다.외부지침 Host:

# Global SSH configurations here will be applied to all hosts
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_project1
IdentityFile ~/.ssh/id_someotherkey

Host somespecifichost.example.com
    IdentityFile ~/.ssh/id_specifichostonlykey

솔직히 더 나은 후자의 접근 방식은 "키링"에 명시적으로 추가하지 않고도 추가한 새 키를 갑자기 선택하지 않는다는 추가 이점이 있습니다.

답변2

실제로 그럴 필요는 없습니다 . 재귀 grep을 사용하여 다음 플래그를 사용하여 일치하는 파일 이름만 보낼 find수 있습니다 .l

grep -slR "PRIVATE" ~/.ssh/ | xargs ssh-add

답변3

이를 수행하기 위해 다음 명령을 생각해 냈습니다.

find ~/.ssh/ -type f -exec grep -l "PRIVATE" {} \; | xargs ssh-add &> /dev/null

이 것 find입니다.ssh포함할 디렉터리 PRIVATE, 개인 키 파일의 이름/경로를 ssh-add.

답변4

id_정규식을 사용하여 점 접미사로 시작하지만 끝나지 않는 모든 파일을 일치시킵니다 .pub.

find ~/.ssh -type f -regextype egrep -regex '.*/id_[^.]+$' | xargs ssh-add

for 루프를 사용할 때의 문제점(허용된 답변에 표시됨)은 모든 키가 동일한 비밀번호를 사용하더라도 여전히 비밀번호를 입력해야 한다는 것입니다.

관련 정보