나는 다음의 도움으로 SSH 항목을 설정했습니다.이 가이드, 예전에는 잘 작동했습니다( hg push
비밀번호를 묻지 않고도 실행할 수 있었습니다). 내가 여전히 동일한 홈 디렉토리를 사용하고 있다는 점을 고려하면 그때와 지금 사이에 무슨 일이 일어났을 수 있습니까?
$ cat .hg/hgrc
[paths]
default = ssh://[email protected]/tshepang/bloog
$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa':
pushing to ssh://[email protected]/tshepang/bloog
searching for changes
...
답변1
SSH 에이전트를 사용해야 합니다. 짧은 대답: 시도해 보세요
$ ssh-add
밀기 전에. 요청 시 비밀번호를 제공하세요.
SSH 에이전트를 실행하지 않은 경우 다음 메시지가 표시됩니다.
Could not open a connection to your authentication agent.
이 경우 하나를 시작하고 환경을 설정할 수 있습니다.
eval $(ssh-agent)
그런 다음 명령을 반복하십시오 ssh-add
.
볼만한 가치가 있는SSH 에이전트 맨페이지.
답변2
이 문제를 해결하는 한 가지 방법은 다음을 사용하는 것 ssh-agent
입니다 ssh-add
.
$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
그런 다음 현재 세션의 비밀번호가 저장됩니다. 다시 질문하지 않습니다.
답변3
다음 ~/.ssh/config 파일을 생성(또는 존재하는 경우 편집)합니다.
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
답변4
편의상 가장 좋은 접근 방식은 다음 답변을 조합하는 것입니다.젬트그리고파힘.
단독으로 사용한다는 것은 새 터미널을 열 때마다 새 인스턴스를 생성한다는 ssh-agent
의미입니다 . 초기화 시 개인 키의 비밀번호를 요청하고 저장합니다. 이렇게 하면 개인 키가 비밀번호로 보호되지만 비밀번호를 반복해서 입력할 필요가 없습니다.ssh-agent
keychain
이것아치스 위키또는 /etc/profile.d/
와 같은 셸 구성 파일 에서 키체인을 초기화하는 것이 좋습니다 . 단점은 터미널을 열면 키체인이 초기화된다는 것입니다..bash_profile
.bashrc
보다 유연한 접근 방식은 이를 keychain
특정 세션과 결합하는 것입니다. tmux
따라서 .bash_profile
:
tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
tmux
...그리고 필요할 때 보안 세션을 시작하는 경우입니다(키 바인딩에서 시작).
#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval `ssh-agent`
trap "kill $SSH_AGENT_PID" 0
fi
if [[ -z "$PID" ]]; then
urxvtc -title "SSH" -e sh -c "${new}"
else
urxvtc -title "SSH" -e sh -c "${old}"
fi
ssh-add
이제 tmux
특정 세션을 시작할 때 키체인이 한 번만 초기화됩니다. 세션이 지속되는 한 ssh
이러한 키에 액세스하여 원격 저장소에 푸시할 수 있습니다.