github에 원격 저장소를 생성하기 위한 스크립트를 만들었습니다. 컴퓨터에 원격 저장소를 생성하기 위해 스크립트에 액세스하는 여러 사용자가 있는 경우 이를 위해 github 토큰 키가 필요합니다. 다음에서 토큰 키를 생성했습니다.토큰Github그리고 다음 명령을 사용하여 github에서 SSH 액세스용 키를 생성합니다.
Accountgithub.com/usuario1
linuxuser@linuxmint$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
/home/linuxuser/.ssh/id_rsa_hotmail_github_usuario1
getting like below:
Enter file in which to save the key (/home/linuxuser/.ssh/id_rsa): /home/linuxuser/.ssh/id_rsa_hotmail_github_usuario1
Accountgithub.com/usuario2
linuxuser@linuxmint$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
/home/linuxuser/.ssh/id_rsa_yahoo_github_usuario2
getting like below:
Enter file in which to save the key (/home/linuxuser/.ssh/id_rsa): /home/linuxuser/.ssh/id_rsa_yahoo_github_usuario2
SSH 키 나열
ls -a ~/.ssh/
id_rsa_hotmail_github_usuario1 id_rsa_hotmail_github_usuario1.pub
id_rsa_yahoo_github_usuario2 id_rsa_yahoo_github_usuario2.pub
각 키를 복사하여 귀하의 계정에 넣었습니다. 키를 생성한 Linux 사용자로 로그인했습니다.
스크립트에서 사용자를 github에서 유지하기 위해 사용자 벡터를 다음과 같이 변경했습니다.
USUARIOS_GIT=("usuario1" "usuario2" "github_usuario3")
그리고 토큰 벡터에는 각 github 사용자의 토큰을 넣었습니다.
CHAVE_TOKEN=("dhkssklfhfkh" "kfhfflhd" "chave_token_github_usuario3")
즉, 원격 저장소를 생성해야 하는 두 개의 github 계정과 사용자를 내 컴퓨터에 로그인하는 스크립트가 있습니다.linuxuser
linuxuser@linuxmint/dev$ gitpratico usuario1 projeto1
다음과 같은 오류가 표시됩니다.
git push [email protected]:usuario1/projeto1.git master
ERROR: Permission to usuario1/projeto1.git denied to usuario2.
빈 저장소를 생성하지만 변경이나 커밋을 허용하지 않으며 나중에 저장소 파일을 github.com/usuario1에 업로드하지 않습니다. usuario2
Yahoo 계정이 있는 사람에게 액세스를 시도하는 것 같습니다.
예를 들어, 회사 컴퓨터에 사용자가 한 명 뿐이고 동일한 컴퓨터 사용자를 사용하여 최대 3명이 서로 다른 시간에 컴퓨터에 액세스하고 스크립트를 사용하여 다른 github 사용자에 원격 저장소를 생성해야 하는 경우 원격 저장소가 비어 있고 커밋이 허용되지 않습니다.
다른 Linux 사용자로 로그인하지 않고도 다른 계정에서 리포지토리를 생성할 수 있도록 하려면 이 문제를 어떻게 해결해야 합니까?
다른 github 사용자로 원격 저장소를 생성하는 스크립트 gitpratico_multiuser 스크립트
내 사용자만 사용하여 이를 구성했는데도 프로젝트 폴더에 있는 파일을 추가하지 않고 빈 저장소를 생성합니다.
내 파일 ~/.ssh/config this
# Default GitHub user (usuario1)
Host github-hotmail
HostName github.com
IdentityFile ~/.ssh/id_rsa_hotmail_github_usuario1
IdentitiesOnly yes
User git
# Github user (usuario2)
Host github-yahoo
HostName github.com
IdentityFile ~/.ssh/id_rsa_yahoo_github_usuario2
IdentitiesOnly yes
User git
에이전트에 SSH 개인 키를 추가합니다.
$ ssh-add ~/.ssh/id_rsa_yahoo_github_usuario1
$ ssh-add ~/.ssh/id_rsa_yahoo_github_usuario2
연결 테스트
사용자 1에서
$ ssh -T git@github-hotmail
Hi usuario1! You've successfully authenticated, but GitHub does not provide shell access.
사용자 2에서
$ ssh -T git@github-yahoo
Hi usuario2! You've successfully authenticated, but GitHub does not provide shell access.
타이핑하는 동안gitpratico_multiuser user1 <repository1>
입력해도 git status
업로드할 파일이 있다는 메시지가 표시되지 않습니다.
내가 입력할 때:
타이핑하는 동안gitpratico_multiuser user2 <repository2>
다음 표에 표시된 대로:
ERROR: Permission to usuario2/repository2.git denied to usuario1.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
하지만 다른 Linux 사용자로 로그인하여 다음과 같이 설정해도 여전히 또 다른 문제가 발생합니다.
root@linuxmint# linuxuser2에 로그인합니다.
userlinux2@linuxmint$ mkdir .ssh
userlinux2@linuxmint$ nano ~/.ssh/config
# Default GitHub user (user1)
github-hotmail host
HostName github.com
IdentityFile /home/userlinux1/.ssh/id_rsa_hotmail_github_usuario1
Identities Only yes
User git
# Github user (user2)
github-yahoo host
HostName github.com
IdentityFile /home/userlinux1/.ssh/id_rsa_yahoo_github_usuario2
Identities Only yes
User git
linuxuser2@linuxmint$ sudo ssh-add /home/userlinux1/.ssh/id_rsa_yahoo_github_user2
[sudo] senha para linuxuser2:
Could not open a connection to your authentication agent.
linuxuser2@linuxmint$ sudo ssh-add /home/userlinux2/.ssh/id_rsa_hotmail_github_usuario1
[sudo] senha para linuxuser2:
Could not open a connection to your authentication agent.
다른 Linux 사용자로 로그인한 github user1 및 user2에 대한 리포지토리를 생성할 수 없습니다. .ssh 폴더를 생성하고 개인 키를 복사해 보았 linuxuser2
으나 결과가 나오지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 검색했는데 userlinux1에서 생성된 동일한 키를 다른 linuxuser2에서 사용하는 방법에 대한 정보를 찾는 것이 없습니다 github_usuario1
.github_usario2
이 문제를 어떻게 해결할 수 있나요?
답변1
이 상황의 근본 원인은 Github가 SSH 키를 사용하기로 선택한 방식입니다. 해결책이 있습니다 ...
일반적으로 SSH는 로그인하려는 사용자를 지정해야 합니다. 그러나 Github은 사용자를 식별하기 위해 공개 키만 사용하기로 선택합니다. 항상 지정한다는 점에 유의하세요.자식@github.com이므로 항상 SSH에 user 로 로그인하도록 지시합니다 git
.
그래서대개두 계정 모두에 SSH 키를 연결하고 원하는 사용자를 지정할 수 있지만 SSH 키는 어떤 계정을 식별하는 데 사용되기 때문에 여기서는 그렇게 할 수 없습니다.
이는 SSH 명령줄이 제공한 모든 공개 키를 시도하고 첫 번째 성공한 공개 키에서 중지하기 때문에 문제가 됩니다. 즉, 실수로 잘못된 사용자로 로그인하게 되면 성공적인 로그인이 필요한 Git 저장소에 액세스할 수 없기 때문에 Github에서 "액세스 거부됨"이라는 메시지를 표시하게 됩니다.
이를 "버그"라고 부르고 싶은 유혹을 느낄 수도 있는데, 이 경우 확실히 두통을 유발할 수 있습니다. 하지만 이 설정이 완전히 특이한 것은 아닙니다.
이에 대해 무엇을 할 수 있나요?
SSH 구성에서 프로필을 설정할 수 있습니다. 꽤 좋은 예가 있습니다.여기.
파일을 생성하거나 편집 ~/.ssh/config/
하고 두 개의 프로필을 추가합니다. 나는 jim
그들에게 전화할 것이다 bob
:
Host github-jim
HostName github.com
IdentityFile ~/.ssh/jim_private_key
IdentitiesOnly yes
User git
Host github-bob
HostName github.com
IdentityFile ~/.ssh/bob_private_key
IdentitiesOnly yes
User git
이제 git URL을 조금만 변경하여 SSH에 사용할 키를 알릴 수 있습니다.
예를 들어:
git clone github-jim:jim/projeto1.git
git clone github-bob:bob/projeto1.git
필요한 사용자를 바꾸 [email protected]
거나 지정 github-jim
하여 github-bob
올바른 개인 키 파일을 선택하는 방법을 참고하세요.