SSH Keygen을 이용한 키 생성 방법과 ssh-agent에 대한 간단 설명
2019년 04월 17일SSH
SSH 프로토콜을 이용해서 원격 서버 및 서비스에 연결, 인증할 수 있습니다. SSH Key를 이용하면 Github같은 서비스에 아이디, 비밀번호 입력 없이 접속할 수 있어 매우 편리하고 보안도 뛰어납니다.
SSH 키 있는지 확인해보기
터미널을 열고 아래 명령으로 SSH 키가 있는지 확인해 볼 수 있습니다.
$ ls -al ~/.ssh
SSH 키가 있다면 리스트가 쭈욱 나올텐데요. 그중에 .pub이 붙어있는 것이 공개키, 그렇지 않은 것이 개인키입니다.
SSH 생성하기
터미널을 열고 아래 명령을 입력합니다. 이메일 부분에는 자기 이메일을 써주셔도 되고, 기타 키가 여러 개인 경우 구분할 수 있는 코멘트를 써주면 됩니다. 어디에 저장할지 나오는데 그냥 엔터 치면 기본 값 위치에 저장됩니다. 비밀번호 입력하는 창도 나오는데 이건 개인키를 누가 훔쳐가면 위험하므로 개인키에 비밀번호를 걸어 암호화 해 두는 겁니다. 그냥 엔터치면 비밀번호를 걸지 않고 개인키를 생성합니다.
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
위 명령에서 쓰인 옵션을 간단히 설명해 보겠습니다.
- -t: 생성할 키 타입
- -b: 생성할 키의 비트(bits) 수
- -C: 코멘트. 대문자에 주의하세요.
생성한 SSH 키를 ssh-agent에 등록하기
$ eval "$(ssh-agent -s)"
명령으로 SSH 에이전트를 백그라운드로 실행시켜주고, 다음 명령으로 SSH 에이전트에 키를 등록합니다.
$ ssh-add ~/.ssh/id_rsa
그런데 ssh-agent는 왜 쓰는 걸까요? ssh-agent없이도 SSH 키를 가지고 아이디, 비밀번호 없이 원격 서버에 접속할 수 있는데요. 그건 위에서 SSH 키 생성 시 입력한 비밀번호와 관련이 있습니다. SSH 키 생성 시 비밀번호를 입력하면 키를 이용해 원격 서버에 접속할 때 비밀번호를 물어보는데 이건 몇 번 해보면 알겠지만 여간 귀찮은게 아닙니다. 아이디, 비밀번호 넣는게 싫어서 SSH 키 만들었더니 또 비밀번호 넣으라고 나오면… 이럴 때 ssh-agent를 씁니다. 쉽게 말해 ssh-agent는 개인키의 비밀번호를 암호화 해 기억해두고 처음 한 번만 개인키 비밀번호를 입력하면 다음부터는 기억한 비밀번호를 이용하므로 사용자는 또 비밀번호를 입력하지 않아도 됩니다. 소켓(Socket)을 생성해서 원격 서버와 통신하기 때문에 비밀번호가 유출될 염려도 없습니다.
만약에 SSH 키 생성 시 비밀번호를 입력하지 않았다면 ssh-agent는 사실 뭐 별 쓸모가 없다고 봐도 됩니다.
Github에 공개키(id_rsa.pub) 등록하기
id_rsa.pub(다른 이름일 수도 있습니다.)의 내용을 열어 그대로 복사합니다. 공백하나도 추가되면 안됩니다. 있는 그대로 복사하세요. 그리고 Github 오른쪽 상단의 계정 프로필 이미지를 누르고 Settings > SSH and GPG keys
를 누릅니다. 그리고 New SSH Key
나 Add SSH key
를 누릅니다. 이제 복사한 SSH 공개키를 붙여넣고 저장합니다.
연결 테스트
ssh -T git@github.com
으로 연결 테스트를 해볼 수 있습니다.
[참고링크]