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?
'개발공부 > 주저리' 카테고리의 다른 글
K8S 컨테이너 런타임에 대한 잡지식 (1) | 2024.09.12 |
---|---|
모름을 모른다는 것 (1) | 2024.04.10 |
코드를 어떻게 비판하나 (0) | 2021.10.20 |
Kotlin 이더라도 CheckedException, UnCheckedException 정의를 주의할 것 (0) | 2021.10.17 |
RSA 복호 캡슐화 아이디어 (0) | 2021.08.18 |