답변:
원하는 결과를 얻는 데 도움이되는 ssh-add 옵션이 보이지 않지만 특히 하나의 키에 관심이 있다면이 문제를 해결하는 것이 쉽습니다.
먼저 special_key의 지문을 가져옵니다.
ssh-keygen -lf /path/to/special_key | awk '{print $2}'
이 지문이 6d : 98 : ed : 8c : 07 : 07 : fe : 57 : bb : 19 : 12 : 89 : 5a : c4 : bf : 25와 같다고 가정하겠습니다.
그런 다음 스크립트 상단에서 ssh-add -l
키를 추가하라는 메시지가 표시되기 전에 키를로드했는지 확인하십시오.
ssh-add -l |grep -q 6d:98:ed:8c:07:07:fe:57:bb:19:12:89:5a:c4:bf:25 || ssh-add /path/to/special_key
원하는 경우이 모든 것을 한 줄로 접을 수 있습니다.
ssh-add -l |grep -q `ssh-keygen -lf /path/to/special_key | awk '{print $2}'` || ssh-add /path/to/special_key
ssh-keygen
하기 ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/key
ssh-keygen
대답에서 키를 생성하지 않습니다- ssh-add -l
귀하의 예제 와 동일하게 실제로 아무것도 추가하지 않습니다. 플래그는 이름과 정확히 일치하지 않도록 명령의 동작을 수정합니다. 이러한 버전은 기능적으로 다릅니다. 경로별로 확인하고 해당 경로의 키가 변경되면 버전이 선택되지 않습니다. 답변의 버전은 또한 어디에서로드했는지에 관계없이 기존 키를 감지합니다.
이 단지 사용하여 확인하는 직접적인 방법은 없습니다 ssh-add
하지만 당신은 사용할 수 있습니다 ssh-keygen
및 확인하려면 몇 가지 스크립트.
$ if ssh-add -l | \
grep -q "$(ssh-keygen -lf /path/to/special_key | awk '{print $2}')"; \
then echo yes; \
else echo no; \
fi
yes
파일 /path/to/special_key
로 표시된 지문이 ssh-add -l
의 출력 에 존재 하면 위의 내용이 인쇄 됩니다 .
$ if ssh-add -l | \
grep -q "$(ssh-keygen -lf /path/to/special_key | awk '{print $2}')"; \
then echo yes; \
else echo no; \
fi
yes
출력 내용은 ssh-keygen -lf /path/to/special_key
다음과 같습니다.
$ ssh-keygen -lf /path/to/special_key
2048 8a:6a:5a:44:20:c8:3a:da:ab:dd:1c:12:2c:e4:20:0c dev-servers (RSA)
그리고 'awk'{print $ 2} '를 사용하여 지문을 포함하는 두 번째 열만 선택합니다.
8a:6a:5a:44:20:c8:3a:da:ab:dd:1c:12:2c:e4:20:0c
ssh-add
명시 적으로 사용해야하는 특별한 이유가있을 수 있지만 "키를 처음 사용할 때 암호를 입력하라는 메시지가 표시되지만 그 이후가 아니라"를 원하면 openssh가 더 간단한 해결책을 제공합니다.
넣어 AddKeysToAgent yes
당신의 .ssh/config
파일.