프로젝트에 대한 git 저장소를 설정하려고 하는데 매번 비밀번호를 다시 입력하지 않아도 되도록 ssh 키를 사용하고 싶습니다. 나는 우연히 ssh가 복사 작업을 하도록 할 수 있는 가능성을 발견했지만 ssh-copy-id
그것은 나에게는 작동하지 않는 것 같습니다.
$ ssh-copy-id -i git@server
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed:
"/c/Users/Me/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to
filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are
prompted now it is to install the new keys
git@server's password:
sh: 1: cannot create .ssh/authorized_keys: Permission denied
편집하다:나는 다음과 같이 문제를 해결했습니다. - su를 통해 루트에 로그인 -authorized_keys 파일의 소유권을 chown git /home/git/.ssh/authorized keys
git으로 변경한 다음 git에 다시 로그인 - 마지막으로 rw 권한을 600 via로 변경하고 chmod 600 ~/.ssh/authorized keys
키를 성공적으로 복사했습니다.
답변1
계정이 git 전용으로 사용되는 경우 관리자는 해당 계정을 제한된 계정으로 설정하여 git 명령만 실행할 수 있도록 하는 것이 좋습니다. 특히 git 액세스는 계정의 자격 증명 및 제한 사항을 변경하는 데 충분하지 않습니다. 이는 ~/.ssh/authorized_keys
사용자가 쓸 수 없는 를 통해 수행됩니다. 일반적으로 웹 인터페이스와 같은 자격 증명을 설정하는 대역 외 메커니즘이 있습니다.
관리자라면 Git 계정 설정 방법을 더 깊이 이해해야 합니다. SSH 서버 구성을 확인하십시오( /etc/sshd_config
또는 파일이 있는 위치를 /etc/ssh/sshd_config
확인하십시오 ( 설정). 파일을 찾으면 공개 키를 추가하십시오. 파일은 단지 행 목록일 뿐이며 각 파일에는 일반적으로 공개 키의 직접 사본이 포함됩니다. 키 사용에 대한 제한사항(예:) 파일 끝에 추가해야 하는지 구성을 확인하십시오 .authorized_keys
AuthorizedKeysFile
authorized_keys
.pub
command="git-shell" nopty no-agent-forwarding no-port-forwarding no-X11-forwarding
답변2
이 오류를 검색할 때 첫 번째 검색 결과에 이 질문이 나왔으므로 솔루션도 추가하겠습니다.
제가 아는 한, 허가와는 아무런 관련이 없습니다. 어떤 이유로든(실제로 빠른 수정 사항을 찾았기 때문에 알아보려고 하지 않았습니다) 프로그램은 ssh 명령을 실행할 때 올바른 ID 파일을 찾지 않았습니다. 한 가지 해결 방법은 SSH 프로그램이 사용하려는 원격 서버에 SSH 키를 추가하는 것입니다. 명령에 -v를 추가하면 명령을 실행할 때 SSH 프로그램이 수행하는 작업을 관찰할 수 있습니다.
ssh -v username@your-host-ip-or-domain
그런 다음 SSH 프로그램이 로컬 컴퓨터(예: Mac)에서 사용하려는 공개 키를 가져옵니다.
cat ~/.ssh/id_rsa.pub
...이를 리모컨의 Authorized_keys 파일에 추가하세요.
~/.ssh/authorized_keys
제 경우의 또 다른 더 나은 해결책은 로컬 SSH 구성 파일에 사용자 정의 호스트를 추가하는 것입니다. 내 Mac에서는 다음과 같습니다.
/Users/my-user-name/.ssh/config
예를 들어 여기에 다음과 같은 내용을 추가할 수 있습니다.
Host mynewserver
HostName some.IP.number.or.domain
Port 20000 #if custom port is used and not the default 22
User the_root
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_for_my_new_server
그런 다음 다음을 실행하면 됩니다.
ssh mynewserver
...짜잔
답변3
"A"와 "B"라는 2대의 컴퓨터가 있다고 가정하고 이제 A에서 "B"로 연결하려고 합니다.
따라서 머신 B에서 다음을 수행하십시오.
vi /etc/ssh_sshd_config
이제 이 두 줄을 검색하여 아래와 같이 변경합니다.
PasswordAuthentication yes
PermitRootLogin yes
이제 "B" 시스템에서 sshd 서비스를 다시 시작하십시오.
service sshd restart
이제 "A" 시스템에서 "B" 시스템으로 키를 복사하면 제대로 작동하기를 바랍니다.
ssh-copy-id [email protected]