ssh-keygen으로 공개키, 비밀키를 생성하기
linux의 ec2 인스턴스에 로그인한 상태로 콘솔 창에 다음과 같이 작성한다. (CodeCommit에 리포지터리 생성은 별도의 설정이 필요없으므로 여기서의 설명은 생략한다)
$ ssh-keygen
그럼 다음과 같이 출력될 것이다.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): 이 상태에서 "Enter"키 누르기
/home/ec2-user/.ssh/id_rsa already exists.
Overwrite (y/n)? "y"입력 후 "Enter"키 누르기
Enter passphrase (empty for no passphrase): 이 상태에서 "Enter"키 누르기
Enter same passphrase again: そのままEnter
Your identification has been saved in /home/ec2-user/.ssh/id_rsa.
Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub.
The key fingerprint is:
ce:97:a8:d8:3b:d4:8d:95:22:68:e0:e2:8e:58:8d:ce ec2-user@ip-x-x-x-xx
The key's randomart image is:
+--[ RSA 2048]----+
| . 생략 . |
+-----------------+
그럼 각 행에 대해 옆에 한국어 설명 적힌대로 엔터 키를 누르거나 y를 입력한 후 엔터를 누르는 등의 진행한다. 그럼 키가 생성된 것이다.
생성된 비밀키는 /home/ec2-user/.ssh/id_rsa에 공개키는 /home/ec2-user/.ssh/id_rsa.pub에 위치한다. 참고로 패스 안에 있는 "ec2-user"은 인스턴스를 생성할 때, 선택한 AMI에 따라 다르다.
AMI | 유저명 |
Amazon Linux 2 혹은 Amazon Linux AM | ec2-user |
CentOS AMI | centos |
Debian AMI | admin |
Fedora AMI | ec2-user 혹은 fedora |
RHEL AMI | ec2-user 혹은 root |
SUSE AMI | ec2-user 혹은 root |
Ubuntu AMI | ubuntu |
그 외에 | ec2-user 혹은 root |
예를 들어, AMI가 ubuntu인 경우에는 비밀키는 /home/ubuntu/.ssh/id_rsa에 공개키는 /home/ubuntu/.ssh/id_rsa.pub에 위치하게 된다.
아무튼 cat 커맨드로 내용을 확인해 볼 수 있다.
$ cat /home/ec2-user/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAyZfh5ztQIQCwPIQAGFZD9kv1ihU9RP9WCBsfSp7JlNs0eNol
...생략
-----END RSA PRIVATE KEY-----
$ cat /home/ec2-user/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJl+HnO1AhALA8hAAYVkP2S/WKFT1E...생략
공개키를 CodeCommit의 IAM유저에 등록한다.
서비스 검색 창에 "IAM" 검색 > "사용자 선택" > 공개키를 등록할 유저 선택 > "보안 자격 증명" 탭 클릭한다. 아래의 메뉴가 보이면 된다.
방금 cat 커맨드로 확인한 /home/ec2-user/.ssh/id_rsa.pub (공개키)의 내용을 복사한 뒤 "SSH 퍼블릭 키 업로드"를 클릭한 후 붙여 넣기 한다.
업로드가 끝나면 SSH 키 ID가 생성된 것을 확인할 수 있다. 생성된 키는 설정시에 필요하므로 복사해두자.
ec2인스턴스에 로그인하여 ssh 접속상태로 git clone하기
먼저 .ssh/ 파일 아래에 config파일을 생성한다. 파일 생성은 vi 커맨드로 할 수 있다. vi 커맨드와 관련해서는 다음의 포스팅을 참고하길 바란다.
$ vi config
config 내용은 다음과 같이 입력한다.
Host git-codecommit.*.amazonaws.com
User XXXXXXXXXXXXXXX
IdentityFile ~/.ssh/id_rsa
User의 XXXX부분에는 방금 복사한 SSH 키 ID를 붙여넣기 한다. 그다음 esc버튼을 누른 다음(커맨드 모드로 변경한 다음) 커맨드라인에 :wq를 입력하여 파일을 저장하고 vi를 종료한다.
그 다음 작성한 config파일에 권한을 다음의 커맨드로 변경한다.
$ chmod 600 ~/.ssh/config
마지막으로 code commit에서 생성한 리포지터리를 선택한 후 ssh 복제를 선택하거나 아래의 SSH 탭을 선택하면 나타나는 커맨드를 복사해서 입력하면 git clone이 된다.
git clone의 기본 커맨드는 다음과 같다.
$ git clone ssh://git-codecommit.리전명.amazonaws.com/v1/repos/리포지토리
번외
번외로 git clone시에 에러가 난다면, 업로드했던 공개키에 문제가 있는 경우가 있으므로 (입력 실수 등) 삭제후 공개키를 다시 업로드해보도록 하자. 그래도 공개키 설정에 대해 문제가 없느데 여전히 에러가 난다면, IAM유저에 AWSCodeCommit에 대한 권한을 추가하면 된다. 방법은 다음과 같다.
SSH 키를 설정하던 화면에서 "권한 추가"를 클릭한다. 그 다음 세 가지 중 "기존 정책 직접 연결"을 선택한 후 검색창에 "AWSCodeCommit"을 입력한다. 그럼 다음과 같이 세 가지 결과가 출력된다.
세 가지 정책은 차이는 다음과 같다. AWSCodeCommitFullAccess이나 AWSCodeCommitPowerUser으로 권한을 추가한 후에 다시 git clone을 시도해보도록 하자.
정책 | 설명 |
AWSCodeCommitFullAccess | CodeCommit의 모든 제어 |
AWSCodeCommitPowerUser | 리퍼지토리의 삭제 불가능 |
AWSCodeCommitReadOnly | 읽기 전용 (git push 불가능) |
참고자료
https://qiita.com/yuyj109/items/5227d031aab3c71ede34
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/managing-users.html
'IT > 기초 지식' 카테고리의 다른 글
[Docker] docker compose 사용법 (0) | 2021.09.14 |
---|---|
Visual Studio Code 단축키 (0) | 2021.07.05 |
[Linux] Linux의 파일, 폴더 권한 확인과 변경 (chmod) (0) | 2021.06.17 |
[Singularity] Singularity 이미지를 생성하는 방법(Docker hub/def file) (0) | 2021.06.16 |
[Linux] 쉘 스크립트(Shell script) 기초 (4) | 2021.06.15 |