개발공부/주저리

Enter passpharase for key: 매번 입력하지 않도록 설정하기

siotMan 2024. 4. 7. 18:02
git pull origin master
# Enter passphrase for key '/Users/ssk/.ssh/id_ed25519':

 

로컬 머신에 ssh key 를 발급하고, passpharase 를 설정한 경우, ssh 연결에 앞서 passpharase 입력을 요구받습니다. 대표적으로 git cli 와 같은 툴을 통해 url 을 origin 으로 등록한 upstream 으로부터 pull/push 를 받는 경우겠습니다. 매번 입력하면 귀찮죠. 해서, 이번 시간에는 passpharase 를 매번 입력하지 않을 수 있도록 설정하는 방법을 알아보겠습니다.

ssh-agent 설정하기

ssh-agent 는 ssh private key 를 메모리에 저장하고 forwarding 하는 proxy 입니다. 우리는 이 agent 를 통해 귀찮은 `Enter passpharase for key` 메세지를 없앨 것입니다. 먼저 ssh-agent 를 실행해봅니다.

ssh-agent -s

 

 

아래와 같이 소켓이 생성되고, process id 환경변수를 설정받았네요. 지금은 한 쉘에서 사용하는 소켓이지만, 다음 글에서는 모든 ssh 요청이 하나의 소켓을 사용할 수 있도록 설정할 것입니다. 그 때 이 변수를 활용해보도록하죠.

SSH_AUTH_SOCK=/var/folders/bp/8c25tjfn2mld95wlhq_wqphc0000gn/T//ssh-6yhC7pom6R7W/agent.29884; export SSH_AUTH_SOCK;
SSH_AGENT_PID=29885; export SSH_AGENT_PID;
echo Agent pid 29885;

 

이제 실행한 ssh-agent 에 ssh private key 를 등록할텐데요, 그전에 키가 이미 등록되어있는 지 확인해보겠습니다.

ssh-add -l
# 결과: The agent has no identities.

 

방금 실행했다보니, 등록된 private 키가 없군요. 키를 등록해보겠습니다. ( 필자의 비대칭키 알고리즘은 edd25519 이고, 파일 경로가 여기에 맞춰져있습니다. rsa 이신분은 파일명이 다를 수 있으니, 각자의 private 키 파일 경로를 확인해서 바꾸어주세요. )

ssh-add ~/.ssh/id_ed25519
# 결과 
# Enter passphrase for /Users/ssk/.ssh/id_ed25519:
# Identity added: /Users/ssk/.ssh/id_ed25519 (...@gmail.com)

 

키가 잘 등록되었는지 확인해보겠습니다.

ssh-add -l
# 256 SHA256:.../... ???@gmail.com (ED25519)

 

키가 잘 등록되었습니다! 이제 git pull 을 통해 귀찮은 과정이 사라졌는지 확인해봅니다.

git pull origin master;
# From github.com:ShinsRo/siotman-experimental

 


 

하지만 아직 불편합니다. 새로운 터미널을 열어 같은 작업을 해보세요. 여전히 입력을 요구할 것입니다. 다음 글에서는 새로운 터미널이 생기더라도 그 터미널을 서빙할 수 있도록 설정해보겠습니다.

 

Ref.

1. How do I get ssh-agent to work in all terminals?

2. how to avoid being asked "Enter passphrase for key " when I'm doing ssh operation on a remote host?

3. SSH Agent와 Agent Forwarding

4. Generating a new SSH key and adding it to the ssh-agent