주로 시스템을 설정하는 초기에 발생하는 문제인데 private key가 제대로 있고 file permission도 잘 설정 되어 있음에도 ssh 접속을 시도하면 권한 오류가 발생하는 경우가 있다.
$ ssh -T git@github.com git@github.com: Permission denied (publickey).
해결하는 방법은 사용하려는 private key를 ssh-add 명령어를 이용해서 ssh-agent에게 추가해 주는 것인데, 만약 ssh-agent가 동작하지 않는 상태라면 이 동작에도 오류가 발생한다.
$ ssh-add ~/.ssh/my_private_key Could not open a connection to your authentication agent.
이와 같은 인증 agent 관련한 문제가 생길 때는 ssh-agent를 실행해서 나오는 결과물을 화면에 붙여 넣으면 된다.
# SSH-agent를 실행하면 환경변수 값들이 화면에 출력된다. $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-GWQEJqNDZHsI/agent.3260; export SSH_AUTH_SOCK; SSH_AGENT_PID=3261; export SSH_AGENT_PID; echo Agent pid 3261; # 이것들을 그대로 화면에 붙여넣고 $ SSH_AUTH_SOCK=/tmp/ssh-GWQEJqNDZHsI/agent.3260; export SSH_AUTH_SOCK; SSH_AGENT_PID=3261; export SSH_AGENT_PID; echo Agent pid 3261; Agent pid 3261 # ssh-add를 시도한다. $ ssh-add ~/.ssh/my_private_key Identity added: /home/litcoder/.ssh/my_private_key (/home/litcoder/.ssh/my_private_key)
그런데 복붙하는 건 너무 번거로우니까 eval command를 사용해서 ssh-agent의 결과물을 그대로 수행하도록 하면 복붙한 것과 동일한 효과를 낼 수 있다.
$ eval `ssh-agent` Agent pid 4416 $ ssh-add ~/.ssh/my_private_key Identity added: /home/litcoder/.ssh/my_private_key (/home/litcoder/.ssh/my_private_key)
매번 로그인 할 때 마다 반복 하는 건 귀찮으니까 .bashrc 같은곳에 넣어두자.
#.bashrc ... eval `ssh-agent` ssh-add ~/.ssh/my_private_key
다시 로그인해서 시험해보면 permission error가 없이 잘 실행되는 걸 볼 수 있다.
$ ssh -T git@github.com Hi litcoder! You've successfully authenticated, but GitHub does not provide shell access.