일상생활에서 꼭 필요한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 루프를 사용할 때의 문제점(허용된 답변에 표시됨)은 모든 키가 동일한 비밀번호를 사용하더라도 여전히 비밀번호를 입력해야 한다는 것입니다.