GitHub가 SSH를 통한 HTTPS를 권장하는 이유는 무엇입니까?


334

GitHub 사이트에는 링크가 있습니다 ...

https://help.github.com/articles/generating-ssh-keys

... 그리고 그것은 ...

권장되는 HTTPS 방법을 사용하지 않기로 결정한 경우 SSH 키를 사용하여 컴퓨터와 GitHub 간의 보안 연결을 설정할 수 있습니다. 아래 단계는 SSH 키를 생성 한 다음 공개 키를 GitHub 계정에 추가하는 과정을 안내합니다.

HTTPS가 권장되는 방법 인 이유는 무엇입니까? SSH 방식에 일종의 보안 결함이 있습니까? SSH 키를 만들었으므로 보안 문제가 완화됩니까?


39
구성이 적을수록 더 쉬울 것입니다. 게다가 일부 열등한 운영 체제에는 기본적으로 SSH 클라이언트가 설치되어 있지 않습니다.
katspaugh

45
이 스레드를 찾는 미래의 사용자에게 : GitHub는 정책을 변경했으며 이제 "GitHub와 상호 작용할 때 SSH 연결을 사용하는 것이 좋습니다."
beardedlinuxgeek

9
@StevePomeroy, 나는 "강력히 추천"문이 그 위치에 존재하지 않는다고 생각합니다.
Noel Abrahams

5
- @BonsaiOak 스티브 포메 로이가 링크 된 페이지로 사용 web.archive.org/web/20140321204642/https://help.github.com/... -하지만 그 이후를 변경할 것 같습니다.
beardedlinuxgeek

5
@ br3nt 맞습니다. 그들은 그것을 추천하지 않았다. 그리고 그들은했다. 그런 다음 그들은 다시하지 않았다. 그래서 내 링크는 archive.org 페이지입니다.
beardedlinuxgeek

답변:


192

GitHub가 권장 사항을 여러 번 변경했습니다 ( ).

가장 광범위한 네트워크 및 플랫폼과이 모든 것을 처음 사용하는 사용자가 설정하기가 가장 쉽기 때문에 현재 HTTPS를 권장하는 것으로 보입니다.

SSH에는 고유 한 결함이 없습니다 (해제 한 경우). 아래 링크에서 SSH 연결에 대한 세부 정보도 제공함을 알 수 있습니다.

  1. 방화벽으로 인해 HTTPS가 차단 될 가능성이 적습니다.

    https://help.github.com/articles/which-remote-url-should-i-use/

    https : // 클론 URL은 모든 리포지토리 (공용 및 개인)에서 사용할 수 있습니다. 이 URL은 방화벽이나 프록시 뒤에 있더라도 모든 곳에서 작동합니다.

  2. HTTPS 연결을 통해 credential.helper비밀번호를 캐시 할 수 있습니다.

    https://help.github.com/articles/set-up-git

    알아두면 좋은 점 : 자격 증명 도우미는 HTTPS 리포지토리 URL을 복제 할 때만 작동합니다. SSH 리포지토리 URL을 대신 사용하면 SSH 키가 인증에 사용됩니다. 권장하지는 않지만이 방법을 사용하려면이 안내서에서 SSH 키 생성 및 사용에 대한 도움말을 확인하십시오.


52
아, 그들은 단순히 HTTPS를 권장하므로 문서화 할 필요가 ssh-agent없습니까? 그럴 수 있지. 감사!
sarnold 2016 년

74
@sarnold 아마도 ssh-agent 및 공개 키 관리와 관련된 많은 질문과 아웃 바운드 HTTP / HTTPS를 허용하지만 SSH는 허용하지 않는 회사 방화벽의 수와 더 관련이있을 것입니다.
Todd A. Jacobs

7
https를 사용하면 전체 생성 / 복사 / 붙여 넣기 ssh 주요 비즈니스를 수행 할 필요가 없기 때문에 사람들이 쉽게 시작할 수 있다고 생각합니다. 또한 ssh 암호를 얻은 공격자 (또는 열려있는 컴퓨터 터미널을 발견 한 공격자)는 여전히 Github 암호를 알고 있어야만 아무것도 밀어 낼 수 있기 때문에 Github의 관점에서보다 안전한 것으로 볼 수 있습니다.
k107

4
@kristi 침입자가 암호 캐시가 만료되기 전에 해당 터미널을 찾으면 암호를 모르더라도 여전히 푸시 할 수 없습니까? ssh-agent를 사용하면 github 암호 대신 ssh 키의 암호를 입력해야한다는 점과 캐시 만료에 대한 명확한 설정이없는 것입니다. ssh 키 암호 대신 github 암호를 입력하는 아이디어는 두 키가 제공하는 전원이 거의 동일한 AFAIK이기 때문에 작은 단계이지만 뒤로 물러서는 것 같습니다.
Halil Özgür

8
나는 그들이 얻는 지원 쿼리의 양을 줄이는 것이 거의 전적으로 있다고 생각합니다. 난 당신이 또한 당신이 있기 때문에 주장 할 수 가정 액세스 어쨌든 HTTPS를 통해 웹 사이트를 암호를 입력, 당신은 할 수 없습니다 증가하고 다른 인증 메커니즘 (SSH 키)를 사용하여 보안을하지만, 실행 가능하게 당신은 공격 표면을 증가하고있는 보안 이 저하 될 수 있습니다 . 그래도 HTTPS와 SSH는 올바르게 사용된다면 충분히 안전해야합니다.
Cartroo

52

여러 가지 이유로 GitHub에서 HTTPS를 권장한다고 가정합니다.

1) 계정 정보 만 필요하므로 어디에서나 사용하기가 더 쉽습니다 (SSH 키 필요 없음)

2) HTTPS 모든 방화벽에서 열려있는 포트입니다. SSH는 항상 외부 네트워크와의 통신을위한 포트로 열려 있지는 않습니다

따라서 GitHub 리포지토리는 SSH보다 HTTPS를 사용하여보다 보편적으로 액세스 할 수 있습니다.

내 생각에 SSH 키는 키를 만드는 데 약간의 추가 작업이 필요합니다.

1) SSH 키는 GitHub 계정에 대한 액세스를 제공하지 않으므로 키를 도난당한 경우 계정을 도용 할 수 없습니다.

2) SSH 키에 강력한 키 구문을 사용하면 키를 도난당한 경우에도 오용이 제한됩니다

GitHub 계정 자격 증명 (사용자 이름 / 암호)을 도난당한 경우 GitHub 비밀번호를 변경하여 액세스를 차단하고 모든 공유 저장소를 빠르게 삭제할 수 있습니다.

개인 키를 도난당한 경우 누군가 빈 저장소를 강제로 푸시하고 소유 한 각 저장소에 대한 모든 변경 기록을 지울 수 있지만 GitHub 계정에서 아무것도 변경할 수는 없습니다. 이 GitHub 계정에 대한 액세스 권한을 침해 한 경우 복구를 시도하는 것이 훨씬 쉬울 것입니다.

암호를 사용하여 보호 된 키로 SSH를 사용하는 것이 좋습니다. 각 컴퓨터마다 다른 SSH 키가 있으므로 해당 시스템을 도난 당하거나 키가 손상된 경우 GitHub에 빠르게 로그인하고 해당 키를 삭제하여 원치 않는 액세스를 방지 할 수 있습니다.

사용중인 네트워크가 SSH 포트를 차단하면 HTTPS를 통해 SSH를 터널링 할 수 있습니다.

https://help.github.com/articles/using-ssh-over-the-https-port/

HTTPS를 사용하는 경우 계정과 리포지토리를 보호하기 위해 이중 인증을 추가하는 것이 좋습니다.

도구 (예 : 편집기)와 함께 HTTPS를 사용하는 경우 해당 도구 구성에서 사용자 이름과 비밀번호를 캐시하는 대신 GitHub 계정의 개발자 토큰을 사용해야합니다.


3
"누군가 개인 키를 보유하더라도 빈 저장소를 강제로 푸시하고 변경 기록을 지울 수 있습니다."-그렇습니다 (끔찍할 것입니다). 그러나 분산 코드베이스의 아름다움은 적어도 사본이 있습니다.
Cameron

푸시를 강제 할 수있는 사람이 SSH와 HTTPS의 차별화 요소라는 것을 확신하지 못합니다. 사용자 이름과 비밀번호가 있으면 강제로 푸시 할 수 있습니다.
Matt Canty

사용자 이름과 비밀번호가 있으면 비밀번호와 이메일 연락처를 변경 한 후 모든 것을 삭제할 수 있습니다. 삭제하기 만하면 각 저장소를 개별적으로 강제 실행할 필요가 없습니다.
jr0cket

https 연결에는 특수 토큰이 필요한 반면 비밀번호와 ssh 키를 비교하고 있습니다.
Alexey Sh.

13

따옴표가 잘못되었거나 github이 다른 페이지에서 다른 권장 사항을 가지고 있거나 시간이 지남에 따라 학습하고 기록을 업데이트 할 수 있습니다.

GitHub와 상호 작용할 때 SSH 연결을 사용하는 것이 좋습니다. SSH 키는 비밀번호를 사용하지 않고 신뢰할 수있는 컴퓨터를 식별하는 방법입니다. 아래 단계는 SSH 키를 생성 한 다음 공개 키를 GitHub 계정에 추가하는 과정을 안내합니다.

https://help.github.com/articles/generating-ssh-keys


22
그러나이 페이지에는 더 이상이 답변에 인용 된 "적극 권장"텍스트가 포함되어 있지 않습니다.
Scott Isaacs 2016 년

다음 링크에서 여전히 HTTPS에 대해 "권장"을 사용하십시오. help.github.com/articles/which-remote-url-should-i-use/… "HTTPS URL을 사용한 복제 (권장)"
JBE

10

방화벽에 의해 HTTPS가 차단 된 경우 HTTPS를 통한 SSH 연결 활성화

HTTPS 포트를 통한 SSH가 가능한지 테스트하려면 다음 SSH 명령을 실행하십시오.

$ ssh -T -p 443 git@ssh.github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

그것이 효과가 있었다면, 훌륭합니다! 그렇지 않은 경우 문제 해결 안내서 를 따라야합니다 .

git@ssh.github.com포트 443 을 통해 SSH로 연결할 수있는 경우 SSH 설정을 재정 의하여 GitHub에 대한 모든 연결이 해당 서버 및 포트를 통해 실행되도록 할 수 있습니다.

ssh 설정에서 이것을 설정하려면에서 파일을 편집하고 ~/.ssh/config다음 섹션을 추가하십시오.

Host github.com
  Hostname ssh.github.com
  Port 443

GitHub에 한 번 더 연결하여 작동하는지 테스트 할 수 있습니다.

$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

에서 인증하는 GitHub의에 / HTTPS 포트를 통해 SSH를 사용하여


9

참조 : 공식 어떤 원격 URL을 사용해야합니까? help.github.com에서 답변하십시오.

편집하다:

SSH URL을 사용하기 위해 더 이상 공개 저장소에 대한 쓰기 액세스 권한이 없어서 원래 설명이 유효하지 않은 것 같습니다.

실물:

아마도 HTTPS URL을 선호하는 주된 이유는 해당 리포지토리에 대한 쓰기 권한이없는 경우 SSH 리포지토리가 공개 리포지토리와 작동하지 않기 때문입니다.

그러나 프로덕션 서버에 배포 할 때는 SSH URL을 사용하는 것이 좋습니다. 여기에는 아마도 Heroku와 같은 서비스가있을 것입니다.


1
"이 URL은 SSH를 통해 git 저장소에 대한 액세스를 제공합니다.이 URL을 사용하려면 공용 저장소에 대한 쓰기 액세스 권한 또는 개인 저장소에 대한 액세스 권한이 있어야합니다.이 URL은 사용자가 쓰기 액세스 권한이없는 공용 저장소에서 작동하지 않습니다. "-이것은 사실이 아닙니다. 누구나 쓰기 권한이없는 SSH URL을 사용하여 공개 저장소를 복제 할 수 있습니다.
Sam

1
@Sam 더 이상 사실이 아닐 수도 있지만 질문에 대답했을 때도 사실이었습니다. 변경 사항을 반영하기 위해 답변을 편집했습니다.
Mark Tye

과연. "GitHub가 SSH를 통한 HTTPS를 어떻게 권장합니까?"라는 질문은 의미가 없습니다.
Mark Tye

0

새로운 SSH 키를 생성하는 것보다 비밀번호를 더 주기적으로 변경하는 경향이 있기 때문에 SSH 키를 사용하여 인증하는 것이 덜 안전하다고 주장 할 수 있습니다.

SSH 키가 제공되는 수명을 제한하는 서버는 사용자가 SSH 키를 정기적으로 새로 고치도록 강요 할 수 있습니다.


사용자가 주기적으로 비밀번호를 변경하도록하는 것은 좋지 않은 조언으로 간주됩니다. 영국 정부 견해 : ncsc.gov.uk/articles/problems-forcing-regular-password-expiry
nazerb

-3

어쩌면 뇌에서 암호를 훔쳐서 컴퓨터에서 키 파일을 훔치기가 더 어려울 수도 있습니다 (적어도 내 지식으로는 이미 일부 물질이 있거나 방법이 있지만 이것은 무한한 토론입니다)? 그리고 암호를 사용하여 키를 보호하면 암호를 다시 사용하고 동일한 문제가 발생합니다 (그러나 일부는 키를 가져 와서 암호를 해독해야하기 때문에 더 많은 작업을 수행해야한다고 주장 할 수 있습니다).

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