반응형

개요

github 에서 private repository를 사용하다보면 https 방식으로 소스코드를 clone 하는 것을 금지 하고 github에서 자체적으로 제작한 CLI 나 ssh-key를 사용할 것을 강제하고 있다. 문제는 github 정책상 다른 계정에서 하나의 ssh-key를 등록해서 사용하고 있는 경우 다른 계정에서 ssh-key를 등록할 수 없다는 것이다. 이는 보안을 위한 올바른 정책이다.

하지만, github를 개인 계정만 사용하는 것이 아니라 회사 계정과 구분해야 사용해야 할 경우가 있기 때문에 어쩔 수 없이 복수의 계정을 사용해야 하는 경우가 발생된다. 이 경우 ssh-key를 복수로 사용해야 한다.

ssh rsa key 추가 생성

우선 기본적으로 기존에 사용하는 ssh-key가 있다는 전제하에 추가 생성을 한다. github에서는 기본적으로 레거시 rsa 키보다는 추천하는 알고리즘으로 생성한 ssh-key 사용하기를 권장하고 있다. 그러나 아직(?)은 rsa 방식을 허용하고 있다.

windows 경우 git-bash 에서 리눅스나 OS X 에서는 터미널에서 다음과 같은 옵션으로 ssh-key 를 생성한다.

# 일반적인 방법
ssh-keygen -C "<your_email@example.com>" -f ~/.ssh/id_rsa_<option>

# github에서 권장하는 알고리즘 필수요소는 아님
ssh-keygen -t ed25519 -C "<your_email@example.com>" -f ~/.ssh/id_rsa_<option>

-f 옵션으로 id_rsa_<option> 이름으로 키가 생성 할 수 있다. 일반적으로 생성과정에서 경로를 묻지 않고 생성을 하게 된다. 이후 추가 패스워드를 넣지 않는다면 enter를 연타하여 생성을 하면 된다. 여기서 다음 예시를 위해 <option> 자리에 임으로 add 라고 이름을 붙이도록 하겠다.

config 설정

windows 에서는 ~/.ssh/config 파일이 생성되어 있는 경우가 있다. 유닉스 계열(리눅스, OS X)에서는 없기 때문는 경우가 있는데 이 경우 생성해주면 된다. 여기서는 vs code로 편집을 하는데 편한 편집 프로그램을 사용해서 작성을 하면 된다.

# ~/.ssh/config
# default
Host github.com
	HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa.pub
    
# addition option 추가된 ssh-key
Host github.com-add
	HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_add.pub

감이 있는 사람은 config 파일 목록에서 보면, Host 이름에 따라서 다르게 동작하게 한다는 것을 알 수 있을 것이다.

git clone from remote repository

우선은 github 의 두번째 계정에 새로 생성한 id_rsa_add.pub 키를 등록을 먼저 하도록 하자.

이제 git 명령어로 github에 있는 repository를 당겨 오도록 하자. 이 경우 ssh-git url 구성 방식에 대해서 이해를 해야 한다. url를 구성하는 위치중에서 host에 해당 되는 부분을 다른 ~/.ssh/config 에 설정한 host 이름으로 대체를 하면 HostName은 유지되지만 사용한 ssh-key는 다르게 사용한다.

# git clone 예시
git clone git@{host}:{github_id}/{repository_name}.git

# add로 git clone을 할 경우
git clone git@github.com-add:{github_id}/{repository_name}.git

정상적으로 clone이 되었다면, 이제 github 에 복수의 계정으로도 ssh-key 를 사용할 수 있게 되었다. 이렇게 clone으로 받아 생성된 workspace는 host 부분이 처음 받은 이름으로 되어 있어 commit/push/pull 등을 정상적으로 사용을 할 수 있게 된다.

참조

 

Github 다수 계정을 위한 SSH key 설정 :: 마이구미

이번 글은 하나의 서버에서 Github 계정을 둘 이상 사용할 수 없는 이슈에 대해 해결 방안을 다뤄본다.이번에 private 저장소를 만들어서 개발서버를 셋팅하는 과정에서 얻은 무식함과 깨달음으로

mygumi.tistory.com

 

새 SSH 키 생성 및 ssh-agent에 추가 - GitHub Docs

SSH 키 암호 정보 SSH(Secure Shell Protocol)를 사용하여 GitHub.com의 리포지토리에서 데이터에 액세스하고 쓸 수 있습니다. SSH를 통해 연결할 때 로컬 머신에서 프라이빗 키 파일을 사용하여 인증합니다.

docs.github.com

 

한 컴퓨터에서 여러 개의 깃허브 계정 사용하기

😀SSH 설정을 통해 한 컴퓨터에서 여러개의 깃허브 계정을 사용해보자.

velog.io

 

github 에 여러 계정 등록하고 ssh 설정하기

새로운 id 는 new-github-id 입니다.

www.lesstif.com

 

반응형
반응형

Linux CentOS 7 : ssh-key remote login (아이디/비밀번호 없이 원격 로그인)

알게된 배경

 ssh-key는 리눅스 외에도 널리 사용되고 있는 git에서도 사용되고 있는 방식으로 먼저 접해보긴 했지만, 리눅스에서의 로그인에도 사용된다는 것을 알게 되었다. 아이디, 패스워드 로그인 방식은 통신과정에서 위의 아이디와 패스워드가 노출될 가능성이 존재한다. 물론 ssh 터미널 자체가 상당한 보안이지만, 더욱 견고하게 만들기 위해 등장하게 되었다.

 통신 내용을 두개의 짝을 가진 키를 이용해서 암호화 하기 때문에 해킹하기 더 어려워진다.


ssh-key 생성

 bash에서 ssh-keygen만 입력 해도 자동으로 현재 사용중인 계정폴더에 .ssh 폴더를 생성하고 그안에 키까 쌍으로 생성이 된다. 물론 생성과정에 private 키 안에다가 비밀번호를 추가로 넣는것도 가능하다.


생성시 입력되는 절차는 키생성 위치(기본 ~/.ssh/), 개인키 비밀번호 생성(그대로 엔터로 넘어갈 경우 없음), 생성한 비밀번호 확인, 절차를 거치면 2개의 키가 쌍으로 생성된다.


옵션을 통해서 key를 생성할때 비트수도 조정할 수 있다.


 생성된 파일 2개중에 뒤에 ".pub"가 붙은 파일은 공개키(public key)라 부르고 다른 하나는 개인키(private key)라 부른다. 공개키는 암호화 할때 사용되고, 개인키는 복호화 할때 사용된다. 개인키 보관에 주의 하도록 하자.


서버에 공유키 넣기

 비교적 높은 보안수준의 ssh-key 덕분에 리눅스에서는 ssh-key로 자동 로그인 하는 기능이 존재한다. 계정 폴더 .ssh/ 폴더에 authorized_keys 파일안에 앞에서 생성한 공유키의 내용을 넣으면 된다. 초기에 넣는 방법은 여러방법이 있으니 바음에 드는 방법을 사용하여 넣자. 여기서는 scp를 이용하여 넣겠다. 파일명이 복수인 만큼 누적해서 생성할 수 있다.

예시)

scp ~/.ssh/id_rsa.pub hg@192.xxx.xxx.xxx:~/.ssh/authorized_keys


 위의 올바르게 경우 192.xxx.xxx.xxx라는 호스트에 hg 계정의 /home/hg/.ssh/authorized_keys로 복사하라는 의미이다. 틀린것이 없다면, 기존 패스워드를 묻고 맞는 패스워드를 입력하면 복사가 진행된다.


로그인 옵션 변경

 높은 수준의 보안을 요구하는 곳에서는 원격 로그인을 할 경우 아이디와 패스워드 입력방식을 아예 막기도 한다. 이러한 경우 로그인 옵션을 변경해 줘야한다. 다만, 주의 할 점은 아이디/비밀번호 로그인을 막을 경우 키를 분실하게 될 경우 로그인할 방법이 없기 때문에 신중히 고려해야 한다.

vi /etc/ssh/sshd_config

아래 항목을 주로 설정하는 방식이고 사실 자신의 입맛이나 정책에 맞게 설정을 하자. 일반적으로는 주석처리 되어 있다. (영어가 조금 되는 사람(?)은 값의 이름만 읽어봐도 대략 어떤 내용인지 짐작이 될 것이다.)

# ssh-key로 자동 로그인
PubkeyAuthentication yes
# ssh-key 자동 로그인 경로 설정
AuthorizedKeyFile  .ssh/authorized_keys
# 아이디 패스워드 로인인 옵션 no로 하면 처은 원격 접속시 비밀번호로 로그인을 할 수 없게 된다.
PasswordAuthentication no
# ssh-key로그인 시도에 대해서 답변 메시지를 보낼지 여부
ChallengeResponseAuthentication no

옵션을 변경하였다면, sshd를 다시 시작하면 적용이 된다.

service sshd reload


이제 다시 접속할때 패스워드를 묻지 않는다면, 성공적으로 설정이 된 것이다.


주의사항

 CentOS 7 한정으로 폴더 권한이 ~/.ssh/는 700, authorized_keys 파일은 600으로 되어야 동작이 된다. 라즈비안의 경우 상관이 없는 것으로 확인 되었다.


참고자료

블로그: 비밀번호 막는 방법(영문)

생활코딩: ssh-key 설정하기

블로그: ssh-key 와 옵션 설명


반응형

+ Recent posts