ssh 키를 다른 컴퓨터에 복사하여 GitHub를 사용할 수 있습니까?


12

원격 서버가 있습니다. 이미 해당 원격 서버에 성공적으로 ssh 할 수 있습니다. 내 키는 authorized_keys원격 서버에 있습니다.

이제 GitHub에서 해당 원격 서버로 직접 가져오고 싶습니다. 하지만 원격 서버에서 permission denied (publickey)시도 할 때 점점오고 ssh -T git@github.com있습니다.

id_rsa.pub로컬 컴퓨터에서 원격 서버로 직접 복사해야합니까 , 아니면 위험합니까?

이것이 대답이라면, 최선의 방법은 무엇입니까?

아니면 원격 서버에서 새 공개 키를 생성하여 github acocount에 추가해야합니까?

최신 정보:

자세한 ssh의 출력은 다음과 같습니다.

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

방금 서버의 IP 주소를 사용하여 ssh 에이전트 전달 설정을 시도했습니다. developer.github.com/guides/using-ssh-agent-forwarding 그러나 여전히 Permission denied (publickey)원격 시스템에 접속하고 있습니다.
Richard

1
ssh 명령에 자세한 옵션이 있습니다. 실제로 시도하고있는 주요 파일을 알려줄 수 있다고 생각합니다. 몇 번 도움이되었습니다.
Allman

답변:


4

id_rsa.pub그것에 어떠한 실제 위험없이 어디서나 복사 할 수 있습니다. 이것은 공개 키이며 이와 같은 것을 의미합니다. 키 쌍의 절반이며 액세스하려는 장소와 공유하는 것이 개인 키 기능을 허용하는 방법입니다.

원격 로그인을 허용하려면 authorized_keys( authorized_keys2일부 시스템에서) 공개 키가 목록에 있어야합니다 . 이 형식의 각 줄에 하나의 키가 있습니다.

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

이 작업을 수행하려면 복사 한 후 다음 authorized_keys과 같이 파일에 추가하십시오 .cat id_rsa.pub >> ~/.ssh/authorized_keys

.ssh폴더에 너무 느슨한 권한이있는 경우 대부분의 제정신 시스템은 키 기반 로그인 사용을 거부합니다 . 폴더가이어야하는데 700여전히 문제가있는 경우chmod 700 ~/.ssh

또한 .ssh폴더의 파일은 600이어야합니다.chmod 600 ~/.ssh


편집 1 :

파일 자체 id_rsa.pub는 원격 서버에서 필요하지 않습니다. 의 일부인 내용 만 authorized_keys. ssh -vT git@github.com자세한 로깅을 사용하도록 설정하여 실행 하는 것이 좋습니다 .

편집 2 :

이는 원격 서버가 파일에있는 것과 일치하는 키가 제공되지 않았 음을 의미합니다. 보고 싶은 것은 다음과 같습니다.

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

확인 사항 :

  • 개인 키 중 하나가 리모컨에 추가 한 공개 키와 일치하는지 확인하십시오 authorized_keys
  • 키가 로그인하려는 사용자 이름과 일치하는지 확인하십시오 (공개 키의 마지막 부분이어야 함)
  • 이름 바꾸기 시도 authorized_keys로를authorized_keys2

감사. 공개 키가 ~/.ssh/authorized_keys원격 서버에 표시됩니다 cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys".를 사용하여 추가했습니다 . 그런 다음 원격 및 RAN에 sshed ~$ chmod 700 ~/.ssh 하고 $ chmod 600 ~/.ssh/authorized_keys여전히 얻을 Permission denied (publickey)내가 GitHub의에 ssh를하려고 할 때. 전체 id_rsa.pub파일을 원격 컴퓨터로 복사해야합니까 ?
Richard

@Richard 파일 자체가 필요하지 않습니다. 필요할 때를 대비하여 .ssh 폴더에 보관하고 싶습니다. 그러나 그것은 필요하지 않습니다. 그것은 단지 내가하는 일입니다. ssh질문에 설명 된 명령을 -v스위치 와 함께 실행하여 ssh가 어떤 권한을 가지고 있는지 정확하게 확인하는 것이 좋습니다 .
Jarmund

편집 2 주셔서 감사합니다. 첫 번째 글 머리 기호를 수행하는 방법을 잘 모르겠습니다 check that one of the private keys....-여기서 어떻게해야합니까?
Richard

포인트 2에서 키가 내 GitHub 사용자 이름과 일치해야 함을 의미합니까? 그 것처럼 아무것도 보이지 않습니다 :)
Richard

문제는 동일한 공개 키를 사용하여 로컬 컴퓨터에서 GitHub로 가져와 GitHub에서 가져올 수 있으므로 GitHub는 괜찮다고 생각해야합니다 ...?
Richard

2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

디버그 추적에 따르면 이러한 키 파일은 실제로 로컬 시스템에 존재하지 않으며 ssh는 실제로 원격 서버에 키를 제공하지 않았습니다. 사용하려는 키가 실제로 ssh를 실행중인 호스트에 있고 파일의 이름이 올바른지 확인하십시오. 기본 파일 중 하나가 아닌 키 파일을 사용하려면 ssh 명령 행에서 키 파일을 지정해야합니다.

ssh -i /path/to/some_key -Tv git@github.com

키 파일이 github에 ssh하려는 원격 서버에 존재하지 않지만에 있습니다 authorized_keys. 이것으로 충분합니까? 아니면 키 파일을 복사해야합니까?
Richard

1
authorized_keys을위한 공공 허용됩니다 키 들어오는 연결. 다른 호스트로 나가는 연결을 설정 하려면 개인 키 파일 의 사본이 필요 합니다. 예, ssh를 실행하는 호스트에 해당 키 파일 중 하나 (id_rsa 등)가 있어야합니다.
Kenster

-i 플래그는 문제 해결에 도움이되었습니다! ssh 폴더를 다른 컴퓨터에 복사하고 원격 자식을 사용하려고했지만 거부되었습니다. -i는 하루를 구했다!
pauljohn32

2

Github에 인증하려면 서버에 개인 키가 필요합니다. 이름에서 알 수 있듯이 공개 키는 공개로 간주되므로 인증하기에 충분하지 않습니다.

ssh를 통해 연결하지 않고 원격 서버에서 Github을 사용할 필요가없는 경우 ssh-agent 전달을 사용해야합니다. 이에 대한 가이드는 Github ( https://developer.github.com/guides/using-ssh-agent-forwarding/ )에서 사용할 수 있습니다 .

그렇지 않으면 새 키를 생성하여 계정에 연결해야합니다.


0

명령을 직접 넣을 수 있습니다.

$ 고양이 ~ / .ssh / id_rsa.pub

ssh 키가 이미 있으면 표시됩니다. 그렇지 않으면 오류가 발생합니다. 새 키를 추가해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.