ssh key passphrase 한번만 입력하기

  • 저번에 올린 글 ssh를 사용해 git clone 하기 에서는 ssh키를 생성할 때 비밀번호, passphrase를 따로 생성하지 않고 진행하는 것을 알아보았다
  • 비밀번호 생성을 하지 않은 이유는 비밀번호를 추가로 요구하기 때문이다
  • 하지만 ssh키와 비밀번호까지 사용한다면 더욱 안전하게 사용할 수 있다
  • 이번에는 비밀번호와 함께 ssh키를 생성하고, ssh-agent를 이용해서 암호를 요구하지 않도록 만들어보자!

결과

  • 최초 셸 실행 때 ssh 비밀번호를 입력하면, 앞으로 비밀번호를 묻지 않는다
  • 컴퓨터를 다시 켜면 물어본다

방법

(공식문서) https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/working-with-ssh-key-passphrases

  • 사용하는 터미널에 따라 다른 프로필을 설정해줘야 한다
  • 윈도우와 리눅스 모두 동일한 방법이다
~/.bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi

unset env
  • 윈도우에서는 git bash를 이용한다
  • vi ~/.bashrc 명령해 vi 에디터로 위 내용을 추가해준다
  • i키를 눌러 입력 모드로 가서 위 내용을 붙여 넣고,
  • esc키를 눌러 입력 모드에서 나와서 :wq를 입력해 저장하고 나온다
  • 터미널에 source ~/.bashrc 명령해 터미널을 새로고침 한다
  • ssh 비밀번호를 요구하는데, 이때 한번 인증을 하면 이후에 비밀번호를 입력하지 않아도 된다

참고

ssh를 사용해 git clone 하기

깃허브에서 클론 할 수 있는 방법 2가지(ssh, pat)를 정리한다

ssh로 클론

ssh key 생성

  • git bash를 실행하여 진행한다
git bash terminal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
# 새로운 ssh 키 생성
# 생성할 때 파일명과 비밀번호를 지정해 줄 수 있다
# 비밀번호는 입력하지 않는다 (엔터키로 스킵)
# 비밀번호까지 지정해주고 싶으면 아래 링크를 참고하자
# https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/working-with-ssh-key-passphrases
# -C 옵션 뒤에는 자신의 이메일 등 적고 싶은 문구를 적는다
# ssh-keygen -t ed25519 -C "chin_sung@naver.com"
ssh-keygen -t ed25519 -C "안녕하세요요요요요"

cd ~/.ssh
# 공개키 내용을 전부 복사한다
cat id_ed25519.pub
# output: ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx chin_sung@naver.com
  • 나는 기본값으로 생성했다
  • ~/.ssh/id_ed25519
  • ~/.ssh/id_ed25519.pub
  • .pub 파일이 이제 깃허브에 등록해야 하는 공개키이다
  • cat 명령으로 읽어서 복사해두자

ssh key 등록

참고

PAT으로 클론

terminal
1
2
# git clone https://{pat}@github.com/{username}/{repo}
git clone https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/chinsun9/my-private-repo.git
  • personal access token으로도 클론 할 수 있다. 자세히

aws 아마존 리눅스2 인스턴스 생성 및 리모트

  • ec2 인스턴스를 하나 만들고, vscode로 원격접속해보겠다

따라하기

준비물

  • ec2 keypair
  • vscode

ec2 인스턴스 생성하기

 ec2 > 인스턴스 > 인스턴스 시작 버튼 클릭
 AMI 선택
 인스턴스 유형 선택. 기본값 사용. 검토 및 시작 버튼 클릭
 시작하기 버튼 클릭
 키페어를 생성하거나 기존 키페어 사용

  • 예전에는 인스턴스 하나 생성하는 것도 겁이 났었는데, 지금은 옵션 안보고 그냥 기본값으로 생성..

ec2 인스턴스 리모트하기

  • ssh 클라이언트로 푸티 putty가 대표적이다
  • 근데 나는 푸티는 잘 안쓰고… vscode의 Remote - SSH 확장도구를 사용한다
  • vscode를 관리자권한으로 실행한다. (열려있는 vscode가 있다면 모두 종료하고 관리자 권한으로 새로 실행한다)

 확장도구가 안깔린 경우 설치한다

  • Ctrl + Shift + P 를 눌러 커맨드창을 열고 remote를 입력하고,
  • Remete-SSH: Connect to Host... 를 누른다

 Configure SSH Hosts... 클릭

 Users\user.ssh\config 클릭

.ssh\config
1
2
3
4
5
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host ec2-asdf
HostName ec2-0-00-000-000.ap-northeast-2.compute.amazonaws.com
User ec2-user
IdentityFile "C:\key\KeyPair.pem"
  • config 파일을 채워줘야하는데,

  • 브라우저로 ec2 인스턴스 화면으로 돌아가서 우클릭 연결을 누른다

  • 위 화면에서 복사를 해서 붙여넣어주면된다
  • HostName에 ec2-0-00-000-000.ap-northeast-2.compute.amazonaws.com
  • User에 @앞에 있는 유저명을 적어주면된다. 나는 ec2-user가 기본값이 였다
  • Host에는 그냥 자기가 원하는 식별문자를 적어주면된다. 나는 아무렇게나 ec2-asdf로 했다
  • IdentityFile에는 키페어 .pem 파일의 경로를 적어주면된다. 절대경로를 사용했다
  • Ctrl + S 로 저장한다
  • 참고 : HostNameec2-0-00-000-000.ap-northeast-2.compute.amazonaws.com 이 값은 인스턴스를 중지했다가 다시켜면 바뀐다. 다음번에 접속할 때 탄력적 IP를 사용하는게 아니라면 계속 수정하면서 접속해야한다

  • Ctrl + Shift + P 를 눌러 커맨드창을 열고 Remote-SSH: Connect to Host를 실행하고
  • 방금 설정한 호스트가 보일 것이다. 클릭한다
  • 그러면 새창이 열린다
1
2
3
4
5
6
[14:56:31.053] > @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions for 'C:\\key\\KeyPair.pem' are too open.
> It is required that your private key files are NOT accessible by others.
> This private key will be ignored.
> Load key "C:\\key\\a.pem": bad permissions

  • 운영체제를 고르라고하는데 당연히 리눅스를 선택한다

  • 이렇게 vscode로 리모트에 성공했다

  • 폴더를 열어보자. 나는 홈디렉터리를 열어보겠다
  • 그러면 창이 리로드 되면서 좌측 탐색기가 업데이트된다
terminal
1
2
3
mkdir a b c

ls
  • mkdir 로 a,b,c 3개의 디렉터리를 생성한다

  • 그러면 좌측 탐색기도 업데이트되는게 보일 것이다. 끝!