모양 만들기
별도의 github / bitbucket / what 계정으로 git repo를 관리하려면 새 SSH 키를 생성하기 만하면됩니다.
우리가 두 번째 정체성의 repos를 당기는 / 밀어 시작하기 전에, 우리는 모양으로 당신을 얻을 해 -하자가 시스템이 일반에 설치 가정 id_rsa
및 id_rsa.pub
키 쌍. 지금 당신의 tree ~/.ssh
모습은 이렇습니다
$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── id_rsa
└── id_rsa.pub
먼저 해당 키 페어의 이름을 지정하십시오. 설명적인 이름을 추가하면 어떤 키가 어떤 사용자 / 원격에 사용되었는지 기억하는 데 도움이됩니다.
# change to your ~/.ssh directory
$ cd ~/.ssh
# rename the private key
$ mv id_rsa github-mainuser
# rename the public key
$ mv id_rsa.pub github-mainuser.pub
다음 으로 새 키 페어를 생성 하겠습니다. 여기서 새 키의 이름을 지정하겠습니다.github-otheruser
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-otheruser
우리가 볼 때 지금, tree ~/.ssh
우리는 참조
$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── github-mainuser
├── github-mainuser.pub
├── github-otheruser
└── github-otheruser.pub
다음으로 ~/.ssh/config
주요 구성을 정의 할 파일 을 설정해야 합니다. 우리는 그것을 만들 것이다 적절한 소유자 읽기 / 쓰기 전용 권한
$ (umask 077; touch ~/.ssh/config)
좋아하는 편집기로 열어 다음 내용을 추가하십시오.
Host github.com
User git
IdentityFile ~/.ssh/github-mainuser
Host github.com-otheruser
HostName github.com
User git
IdentityFile ~/.ssh/github-otheruser
아마도 기본 github ID와 관련된 기존 repos가있을 것입니다. 따라서 "default"github.com Host
은 mainuser
키 를 사용하도록 설정되어 있습니다 . 한 계정을 다른 계정보다 선호하지 않으려면 업데이트 된 ssh 구성을 사용하도록 시스템의 기존 저장소 를 업데이트 하는 방법을 보여 드리겠습니다 .
github에 새로운 SSH 키 추가
로 향할 github.com/settings/keys 새로운 추가 공개 키를
공개 키 내용은 다음을 사용하여 얻을 수 있습니다 : github에 복사 / 붙여 넣기
$ cat ~/.ssh/github-otheruser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBVvWNQ2nO5...
이제 새로운 사용자 ID가 모두 설정되었습니다. 아래에서이를 사용하는 방법을 보여 드리겠습니다.
작업 완료 : 리포지토리 복제
그렇다면 이것이 어떻게 git 및 github과 함께 작동합니까? 계란이 없으면 닭고기를 먹을 수 없기 때문에 기존 레포 복제를 살펴 보겠습니다. 이 상황은 직장에 대한 새로운 github 계정이 있고 회사 프로젝트에 추가 된 경우에 적용됩니다.
github.com/someorg/somerepo
이미 존재하고 당신이 그것에 추가 되었다고 가정 해 봅시다 – 복제는 쉽습니다
$ git clone github.com-otheruser:someorg/somerepo.git
그 굵은 부분이 있어야합니다 경기 Host
당신의 이름을 우리는 설정 ~/.ssh/config
파일을. git을 해당하는 IdentityFile
것과 올바르게 연결 하고 github으로 올바르게 인증합니다.
작업 완료 : 새 저장소 만들기
계란이 없으면 닭고기를 먹을 수 없기 때문에 보조 계정에 새 저장소를 게시하는 방법을 살펴 보겠습니다. 이 상황 은 보조 github 계정을 사용하여 새 콘텐츠를 만드는 사용자에게 적용됩니다 .
이미 로컬에서 약간의 작업을 완료했으며 이제 github으로 넘어갈 준비가되었다고 가정 해 봅시다. 원한다면 나와 함께 할 수있어
$ cd ~
$ mkdir somerepo
$ cd somerepo
$ git init
이제이 리포지토리를 구성하여 신원 을 사용하십시오.
$ git config user.name "Mister Manager"
$ git config user.email "someuser@some.org"
이제 첫 커밋
$ echo "hello world" > readme
$ git add .
$ git commit -m "first commit"
커밋을 확인하여 git log를 사용하여 새 ID를 사용 했는지 확인하십시오.
$ git log --pretty="%H %an <%ae>"
f397a7cfbf55d44ffdf87aa24974f0a5001e1921 Mister Manager <someuser@some.org>
좋아, github에 푸시 할 시간이다! github은 아직 새로운 저장소에 대해 알지 못하므로 먼저 github.com/new 로 이동 하여 새 저장소를 작성하십시오. 이름은 somerepo
이제 올바른 ID / 자격 증명을 사용하여 저장소가 github과 "통화"하도록 구성하기 위해 원격을 추가했습니다. 새 계정에 대한 github 사용자 이름을 가정하면 someuser
...
$ git remote add origin github.com-otheruser:someuser/somerepo.git
그 굵은 부분은 절대적으로 중요하며이 있어야 일치 Host
우리는 당신에 정의 된 ~/.ssh/config
파일
마지막으로 레포를 밀어
$ git push origin master
새로운 SSH 구성을 사용하도록 기존 저장소를 업데이트하십시오.
이미 일부 리포지토리가 복제되었지만 새 SSH 구성을 사용하려고한다고 가정합니다. 위의 예 에서 SSH 구성 파일에 이전 id_rsa
/ id_rsa.pub
키 쌍을 할당하여 기존 저장소를 그대로 유지했습니다 Host github.com
. 이것에는 아무런 문제가 없지만 지금은 적어도 5 개의 github 구성이 있으며 그 중 하나를 "기본"구성으로 생각하는 것을 좋아하지 않습니다. 각 구성에 대해 명시 적입니다.
우리가 이것을하기 전에
Host github.com
User git
IdentityFile ~/.ssh/github-mainuser
Host github.com-otheruser
HostName github.com
User git
IdentityFile ~/.ssh/github-otheruser
이제 우리는 이것을 이것으로 업데이트 할 것입니다 ( 굵게 변경 )
Host github.com-mainuser
HostName github.com
User git
IdentityFile ~/.ssh/github-mainuser
Host github.com-otheruser
HostName github.com
User git
IdentityFile ~/.ssh/github-otheruser
그러나 이는 이제 github.com
원격의 기존 저장소 가이 ID 파일에서 더 이상 작동하지 않음 을 의미 합니다. 그러나 걱정하지 마십시오. 간단한 수정입니다.
기존 SSH를 업데이트하여 새 SSH 구성을 사용하려면 간단히 repo의 git config 파일을 열고 URL을 업데이트하십시오!
$ cd existingrepo
$ nano .git/config
원격 출발지 필드 업데이트 ( 굵게 표시 )
[remote "origin"]
url = github.com-mainuser:someuser/existingrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
그게 다야. 지금 당신은 당신의 마음의 내용에 push
/ 할 수 있습니다pull
SSH 키 파일 권한
공개 키가 올바르게 작동하지 않아 문제가 발생하는 경우 SSH는 디렉토리 및 해당 키 파일 에서 허용 되는 파일 권한 에 대해 매우 엄격 ~/.ssh
합니다.
일반적으로 모든 디렉토리 700
와 파일이 있어야합니다. 600
즉, 소유자 / 읽기 전용이므로 다른 그룹 / 사용자는이를 읽거나 쓸 수 없습니다.
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/config
$ chmod 600 ~/.ssh/github-mainuser
$ chmod 600 ~/.ssh/github-mainuser.pub
$ chmod 600 ~/.ssh/github-otheruser
$ chmod 600 ~/.ssh/github-otheruser.pub
SSH 키를 관리하는 방법
연결하는 모든 호스트에 대해 별도의 SSH 키를 관리하므로 하나의 키가 손상된 경우 해당 키를 사용한 다른 모든 장소에서 키를 업데이트 할 필요가 없습니다. 이는 사용자 정보 중 1 억 5 천만 명의 사용자 정보가 도용되었다는 통지를 Adobe로부터 받았을 때와 같습니다. 이제 신용 카드를 취소하고이 신용 카드에 의존하는 모든 서비스를 업데이트해야합니다.
내 ~/.ssh
디렉토리는 다음과 같습니다 .pem
. 연결하는 각 도메인의 폴더에 각 사용자마다 하나의 키가 있습니다. .pem
키를 사용 하므로 키당 하나의 파일 만 필요 합니다.
$ tree ~/.ssh
/Users/naomik/.ssh
├── config
├── github.com
│ ├── naomik.pem
│ ├── someusername.pem
├── known_hosts
├── naomi.makes.software
│ ├── naomi.pem
├── somedomain.com
│ ├── someuser.pem
└── someotherdomain.org
└── someuser.pem
그리고 여기 해당 /.ssh/config
파일이 있습니다. 분명히 github은 github에 대한이 질문에 대답하는 것과 관련이 있지만이 답변은 여러 서비스 / 기계에서 ssh ID를 관리하는 지식을 갖추는 것을 목표로합니다.
Host github.com-naomik
HostName github.com
User git
IdentityFile ~/.ssh/github.com/naomik.pem
Host github.com-someuser
HostName github.com
User git
IdentityFile ~/.ssh/github.com/someusername.pem
Host naomi.makes.software
User naomi
IdentityFile ~/.ssh/naomi.makes.software/naomi.pem
Host somedomain.com
HostName 162.10.20.30
User someuser
IdentityFile ~/.ssh/somedomain.com/someuser.pem
Host someotherdomain.org
User someuser
IdentityFile ~/.ssh/someotherdomain.org/someuser.pem
PEM 키에서 SSH 공개 키 얻기
위의 각 키에 대해 하나의 파일 만 있음을 알았습니다 . 공개 키를 제공해야 할 때 필요에 따라 간단히 공개 키를 생성 합니다.
따라서 github에서 ssh 공개 키를 요청하면이 명령을 실행하여 공개 키를 stdout에 출력하십시오. 필요한 경우 복사 / 붙여 넣기
$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAA...
이것은 원격 컴퓨터에 키를 추가 할 때와 동일한 프로세스입니다. ssh-rsa AAAA...
값은 원격의 복사됩니다 ~/.ssh/authorized_keys
파일
id_rsa
/ id_rsa.pub
키 쌍을 PEM 형식으로 변환
따라서 주요 파일을 길들이고 일부 파일 시스템 쪼개기를 줄이고 싶습니까? 키 페어를 단일 PEM으로 쉽게 변환
$ cd ~/.ssh
$ openssl rsa -in id_rsa -outform pem > id_rsa.pem
또는, 위의 예와 함께 다음, 우리는 이름을 변경 id_rsa -> github-mainuser
하고 id_rsa.pub -> github-mainuser.pub
- 그래서
$ cd ~/.ssh
$ openssl rsa -in github-mainuser -outform pem > github-mainuser.pem
이제 우리가 이것을 올바르게 변환했는지 확인하기 위해 생성 된 공개 키가 이전 공개 키와 일치 하는지 확인하고 싶을 것입니다
# display the public key
$ cat github-mainuser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==
# generate public key from your new PEM
$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==
이제 당신이 가지고 github-mainuser.pem
파일을 안전하게 이전 삭제할 수 있습니다 github-mainuser
및 github-mainuser.pub
파일을 - 오직 PEM 파일이 필요합니다; 필요할 때마다 공개 키를 생성하십시오 ^ _ ^
처음부터 PEM 키 만들기
개인 / 공개 키 쌍을 만든 다음 단일 PEM 키로 변환 할 필요가 없습니다 . PEM 키를 직접 만들 수 있습니다.
를 만들어 보자 newuser.pem
$ openssl genrsa -out ~/.ssh/newuser.pem 4096
SSH 공개 키를 얻는 것은 동일합니다
$ ssh-keygen -y -f ~/.ssh/newuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACA ... FUNZvoKPRQ==
ssh-add ~/.ssh/id_rsa_COMPANY
ssh-agent에 사용하도록 포함 시키려면 <br/>. <hr /> 위에서 언급 한 자습서를 통해 나머지는 잘 작동합니다.