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 비밀번호를 요구하는데, 이때 한번 인증을 하면 이후에 비밀번호를 입력하지 않아도 된다

참고