我的repo 分别推送到github,gitcafe。 正确添加了两个公钥私钥之后,并命名为id_github和id_gitcafe,发现每次push 代码 都必须重新ssh-add 上私钥。将id_github 名改回默认的id_rsa,就可以直接push了。但是gitcafe 被拒绝。有没有办法可以一次都设置上,不需要每次 ssh-add 私钥的。
淡淡烟草味2017-04-28 09:06:12
우선 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 키를 사용하는 방법은 무엇입니까?
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를 사용하는 모든 기본 애플리케이션과 명령은 구성 파일의 지침에 따라 해당 개인 키를 찾습니다.
이 섹션 시작 부분의 주제로 돌아가서 관리용 키체인을 사용하면 이 구성 파일이 필요하지 않을 것이라고 생각하지만 아직 테스트할 기회가 없었습니다. 현재 환경에서는 모든 것이 괜찮습니다. 새 컴퓨터로 변경하고 환경을 재구성하면 시도해 보겠습니다.
Host와 Hostname의 대응 관계에 있어서 Hostname이 도메인 이름인 경우 일관성을 유지하는 것이 가장 좋습니다. 하지만 여기에 두 가지 팁이 있습니다.
1. 동일한 도메인 이름 아래에 두 가지 다른 구성이 있는 경우 어떻게 되나요?
Github를 예로 들면, 개인용 계정과 조직용 계정 두 개가 있고 서로 다른 키를 사용하고 싶다면 다음과 같이 작성할 수 있습니다.
여기서 Host는 Github의 두 사용자 이름, 즉 github.com/nightire 및 github.com/very-geek
에 해당합니다. 2. 도메인 이름이 디지털 IP인 경우 단순화할 수 있나요?
호스트는 해당 IP를 기억하기 쉬운 이름으로 바꾸는 데 도움을 줄 수 있습니다. 예를 들어 회사 내에서 Git 서버(gitolite, Gitlab 또는 기타 도구 기반)를 구성하는 경우 일반 액세스 주소는git://xxx.xxx.xxx.xxx:repo.git
입니다. 다음 구성을 사용하면git.visionet:repo.git
<🎜로 단순화할 수 있습니다. > 매우 유용합니다.
그렇습니다. ssh-add가 이미 요구 사항을 충족하는 경우(시작 후 다시 수행해야 하는 경우 제외) 스크립트를 사용하여 이를 완전히 자동화할 수 있습니다. 또는 (또는 사용하는 다른 쉘 환경 구성 파일)에 입력한 .bashrc
ssh-add.bash_profile
명령의 내용을 작성하면 터미널을 여는 동안 해당 내용이 be 이 작업은 자동으로 수행되었습니다.
하지만 앞서 말했듯이 이 메커니즘은 ssh-agent 서비스에 의존하며 터미널에서만 유효합니다. 키체인 메커니즘 사용은 시스템 전체(터미널에 의존하지 않는 애플리케이션 포함)에서 유효하며 ssh-agent 서비스를 열 필요가 없습니다.
마지막으로 키체인 서비스는 Mac에서만 사용할 수 있는 것이 아닙니다. 방금 검색해 보니 Windows와 다양한 Linux에 해당하는 메커니즘이 있지만 사용해 본 적이 없어서 Mac만 예로 들었습니다. 이러한 개념을 이해하고 나면 구체적인 방법을 스스로 찾을 수 있다고 믿습니다.
巴扎黑2017-04-28 09:06:12
허용된 답변에 약간의 추가
ssh-add 이 명령은 사용하는 개인 키를 영구적으로 기억하는 데 사용되지 않습니다. 실제로 그 기능은 ssh-agent가 관리하는
세션에 지정한 개인 키를 추가하는 것뿐입니다. 그리고 ssh-agent는 개인 키를 저장하는 데 사용되는 임시 세션 서비스이므로 다시 시작하면 ssh-agent
서비스가 재설정됩니다.
github 문서에서 현재 세션에 추가하는 방법을 알아볼 수 있습니다:
새 SSH 키 생성 및 ssh-agent에 추가
다음 문서를 통해 ssh가 공개 키와 개인 키 쌍을 사용하는 방법을 알아볼 수 있습니다.
오류: 권한 거부됨(공개 키)
또한 로컬 구성 콘텐츠는 다음 파일에 배치됩니다.
으아악