방금 SSH 키 생성을 사용하여 공개 키와 개인 키를 생성했습니다. 공개 키를 업로드했습니다.GitLab(기본적으로 git 허브의 복제품) 우리 대학 시스템에 키를 성공적으로 업로드했다는 이메일을 받았습니다. git clone 명령을 실행하려고 하면 다음과 같은 메시지가 나타납니다.
Cloning into 'csci6990-hci-f13'...
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly
git lab 시스템을 탓하기 전에 내가 다 제대로 하고 있는 것인지 이해하려고 노력 중입니다. 그러나 공개 키를 git lab에 업로드할 때 내 Mac OS X에서 개인 키가 어디에 있는지 gitlab에 알리는 지침/단계가 없습니다. 이로 인해 sshkeygen이 키를 일종의 표준 저장소 위치에 자동으로 넣을 수도 있다는 생각이 들었습니다. 그렇습니까? 그렇지 않은 경우 파일 시스템에서 해당 개인 키가 있는 위치를 원격 시스템에 알리지 않고 공개 키를 업로드하고 작동시키려면 어떻게 해야 합니까?
편집: 이것은 ssh -vvv의 출력입니다.
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to gitlab.cs.uno.edu [137.30.120.92] port 22.
debug1: Connection established.
debug1: identity file /Users/abramhandler/.ssh/id_rsa type -1
debug1: identity file /Users/abramhandler/.ssh/id_rsa-cert type -1
debug1: identity file /Users/abramhandler/.ssh/id_dsa type -1
debug1: identity file /Users/abramhandler/.ssh/id_dsa-cert type -1
ssh_exchange_identification: Connection closed by remote host
답변1
내 Mac OS X에서 개인 키가 어디에 있는지 gitlab에 알려주는 지침/단계가 없습니다.
원격 서버는 로컬 개인 키가 어디에 있는지 알 필요가 없습니다. 결코 그것을 볼 수 없고, 볼 수도 없습니다. 그것은 귀하의 컴퓨터에 남아 있으며 결코 전송되지 않습니다.
이로 인해 sshkeygen이 키를 일종의 표준 저장소 위치에 자동으로 넣을 수도 있다는 생각이 들었습니다.
(선택적으로) 자신만의 키 이름을 설정하라는 메시지가 표시되면 기본 파일 이름이 언급됩니다 /home/you/.ssh/id_rsa
. 아마도 개인 키일 것입니다. 또한 접미사가 붙은 공개 키를 생성합니다 .pub
. 이름을 직접 지정하면 어디에든 넣을 수 있지만 내가 아는 한 두 파일은 모두 같은 디렉터리에 있어야 합니다.
기본 이름을 사용하지 않는 경우 키를 사용하려면 ssh-agent
via를 사용하여 등록 ssh-add
하거나 ssh를 호출할 때 명령줄에서 지정해야 합니다. 예:
ssh -i ~/.ssh/mykey ....
이는 가 아니지만 mykey.pub
(위에서 언급한 대로) mykey.pub
와 동일한 디렉터리에 있어야 합니다 mykey
. 즉, -i
다음을 가리킨다.개인 키. 키가 비밀번호로 보호되어 있으면 이를 제공하라는 메시지가 표시됩니다. 그런 다음 ssh로 보내십시오.공개 키서버에.
지정된 키를 사용하지 않는 경우 -i
해당 /home/you/.ssh/id_rsa
키가 사용됩니다(사용 가능한 경우). 기본 키를 사용하는 경우 나머지는 무시해도 됩니다.
기본이 아닌 키를 사용하려면 git
(예: "id_rsa"를 선택 해제한 경우) 먼저 ssh-agent를 사용해야 합니다 ssh-agent
. ssh-agent의 기본 아이디어는 이를 사용하여 쉘이나 다른 영구 애플리케이션을 호출하는 것입니다. git을 호출하는 쉘(예: OSX 특정 메소드를 가질 수 있는 GUI 자체). 예를 들어:
> ssh-agent bash
ssh-agent에서 새로운 bash 하위 쉘을 시작하십시오. 다음:
> ssh-add ~/.ssh/mykey
다시 말하지만, 개인 키입니다. 원하는 만큼 추가할 수 있습니다. 나중에 해당 쉘이나 하위 쉘 내에서 ssh를 사용하면 자동으로 원격 서버에서 키 목록을 시도합니다. Git을 사용하여 복제:
git clone ssh://me@wherever/some/repo/path
답변2
예. 개인 키는 생성한 키 유형에 따라 ~/.ssh/id_rsa 또는 ~/.ssh/id_dsa에 있어야 합니다. 파일 권한이 엄격한지 확인하세요.
구성을 더욱 단순화하기 위해 키와 함께 사용되는 비밀번호를 캐시하도록 프록시를 설정할 수도 있습니다.
답변3
SSH 포트로 나가는 연결을 어떻게든 필터링하거나 중단하는 라우터 뒤에 있을 가능성이 있습니까 137.30.120.92
? 이 서버에 잘 연결할 수 있기 때문입니다.
martin@martin ~ % ssh 137.30.120.92
The authenticity of host '137.30.120.92 (137.30.120.92)' can't be established.
ECDSA key fingerprint is 45:45:c0:59:c6:c9:50:22:7d:45:bf:cc:e2:9a:99:31.
+--[ECDSA 256]---+
| .o=@*+o |
| o+o= . |
| .. .|
| . o .|
| S . + |
| . . |
| E . |
| B |
| = |
+-----------------+
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '137.30.120.92' (ECDSA) to the list of known hosts.
Ubuntu 12.04.2 LTS gitlab ssh-pty
Password:
그러나 출력에 Connection closed by remote host
따르면 ssh
클라이언트는 실제로 SSH 서버와 통신할 수 없습니다. 서버는 연결을 수락하지만 클라이언트에 응답하지 않습니다 ssh
.
또한 관련 메모에 따르면 Connection closed by remote host
이는 서버 충돌의 증상일 수 있습니다. 적어도 이 오류가 발생하는 일반적인 시나리오입니다. 하지만 여기서는 그렇지 않습니다. 왜냐하면 동일한 오류가 발생하기 때문입니다.