내 저장소는 각각 github과 gitcafe로 푸시됩니다. 두 개의 공개 키와 개인 키를 올바르게 추가하고 이름을 id_github 및 id_gitcafe로 지정한 후 코드를 푸시할 때마다 개인 키를 다시 ssh 추가해야 한다는 사실을 발견했습니다. id_github 이름을 기본 id_rsa로 다시 변경하면 직접 푸시할 수 있습니다. 그러나 gitcafe는 거절당했습니다. 매번 개인 키를 SSH로 추가하지 않고 한꺼번에 설정할 수 있는 방법이 있나요?
우선 ssh에 관련된 모든 메커니즘은 사실 상대적으로 복잡하고, 헷갈리기 쉽다는 점을 말씀드리고 싶습니다. 이 지식 시스템을 철저하게 익히려면 체계적으로 해야 합니다. 관련 지식을 배워보세요. 먼저, 책 한 권을 추천해 드립니다. 시간을 내어 한 번 읽어보시는 것이 좋습니다.
SSH, The Secure Shell, 이 책의 초판은 중국어로 되어 있습니다.
구체적인 질문에 대해 이야기해 보겠습니다.
먼저 한 가지를 이해해야 합니다: ssh-add 이 명령은 사용하는 개인 키를 영구적으로 기억하는 데 사용되지 않습니다. 실제로 그 기능은 ssh-agent에서 관리하는 세션에 지정한 개인 키를 추가하는 것뿐입니다. 그리고 ssh-agent는 개인 키를 저장하는 데 사용되는 임시 세션 서비스입니다. 즉, 다시 시작하면 ssh-agent 서비스가 재설정됩니다. .
해당 개인 키를 영구적으로 기억하려면 ssh-agent 서비스에 의존할 수 없습니다. 신뢰할 수 있는 옵션은 다음 중 사용 사례에 적합한 옵션에 따라 달라집니다.
일종의 보안 키 관리 메커니즘을 사용하세요
질문에 사용하시는 운영체제에 대한 설명이 부족하여 제가 매일 사용하는 Mac OS X를 예로 들어보겠습니다. Mac 시스템에는 SSH 키를 포함한 다양한 비밀 키를 쉽게 관리할 수 있는 키체인 서비스와 관리 프로그램이 내장되어 있습니다. ssh-add는 기본적으로 현재 실행 중인 ssh-agent 서비스에 지정된 비밀 키를 추가하지만 이 기본 동작을 변경하여 키체인 서비스에서는 Mac을 통해 이러한 키를 안전하게 기억, 관리, 보관할 수 있습니다.
다음 명령을 실행하기만 하면 됩니다.으아악
이후 다른 프로그램에서 SSH 키를 요청하면 키체인 서비스를 통해 요청하게 됩니다. 아래 스크린샷에서는 내가 생성한 4개와 Github 클라이언트 앱에서 사용하는 1개를 포함하여 현재 컴퓨터의 키체인으로 관리되는 ssh 키를 볼 수 있습니다. 전자는 모두 ssh 관련 명령에서 사용되며 후자는 이를 지정합니다.Github.app 애플리케이션에서만 사용됩니다. 또한 모두 로그인 키체인이므로 현재 사용자가 로그인한 후에만 적용됩니다. 사용자가 변경되거나 사용자가 로그인하지 않은 경우에는 사용할 수 없습니다. 키체인 서비스가 당신을 위한 것입니다.
ssh-add로 갔습니다.) , 다른 메커니즘이 이 문제를 해결하는 데 도움이 될 수 있습니다(예: ssh config).
간단히 말하면 ssh config는 호스트 이름, 사용자 이름, 액세스 정책 등 다양한 비밀 키에 해당하는 설정을 설명하는 구성 파일입니다.
아래에는 로컬 구성의 두 조각이 캡처되어 있습니다.
이 두 구성은 각각 Github 및 Coding 서비스에서 사용되는 비밀 키에 해당합니다. 첫 번째 줄의 Host는 이름일 뿐이고 세 번째 줄의 Hostname은 해당 실제 주소이지만 두 항목을 일관되게 유지하는 것이 가장 좋습니다. 머리 속에서 변환할 필요는 없습니다.
이러한 구성에서는
git clone https://github.com/user/repo
할 때id_rsa
비밀키가 사용되고,git clone https://coding.net/user/repo
할 때에는 당연히nightire
비밀키가 사용됩니다.물론 이 구성은 Git에만 국한되지 않습니다. SSH를 사용하는 모든 기본 애플리케이션과 명령은 구성 파일의 지침에 따라 해당 개인 키를 찾습니다.
이 섹션 시작 부분의 주제로 돌아가서 관리용 키체인을 사용하면 이 구성 파일이 필요하지 않을 것이라고 생각하지만 아직 테스트할 기회가 없었습니다. 현재 환경에서는 모든 것이 괜찮습니다. 새 컴퓨터로 변경하고 환경을 재구성하면 시도해 보겠습니다.
더 간단한 방법이 있나요?
그렇습니다. ssh-add가 이미 요구 사항을 충족하는 경우(시작 후 다시 수행해야 하는 경우 제외) 스크립트를 사용하여 이를 완전히 자동화할 수 있습니다. 또는 (또는 사용하는 다른 쉘 환경 구성 파일)에 입력한
.bashrc
ssh-add.bash_profile
명령의 내용을 작성하면 터미널을 여는 동안 해당 내용이 be 이 작업은 자동으로 수행되었습니다.하지만 앞서 말했듯이 이 메커니즘은 ssh-agent 서비스에 의존하며 터미널에서만 유효합니다. 키체인 메커니즘 사용은 시스템 전체(터미널에 의존하지 않는 애플리케이션 포함)에서 유효하며 ssh-agent 서비스를 열 필요가 없습니다.
마지막으로 키체인 서비스는 Mac에서만 사용할 수 있는 것이 아닙니다. 방금 검색해 보니 Windows와 다양한 Linux에 해당하는 메커니즘이 있지만 사용해 본 적이 없어서 Mac만 예로 들었습니다. 이러한 개념을 이해하고 나면 구체적인 방법을 스스로 찾을 수 있다고 믿습니다.
허용된 답변에 약간의 추가
github 문서에서 현재 세션에 추가하는 방법을 알아볼 수 있습니다:
새 SSH 키 생성 및 ssh-agent에 추가
다음 문서를 통해 ssh가 공개 키와 개인 키 쌍을 사용하는 방법을 알아볼 수 있습니다.
오류: 권한 거부됨(공개 키)
또한 로컬 구성 콘텐츠는 다음 파일에 배치됩니다.
으아악저는 github.comcoding.net과 동일한 계정과 비밀번호를 사용하고 있습니다. 이것을 사용할 수 있습니다.