이 안내서 의 도움으로 ssh를 설정했으며 잘 작동했습니다 ( hg push
암호를 묻지 않고 실행할 수 있음 ). 나는 여전히 동일한 홈 디렉토리를 사용하고 있다고 생각하면서 그때와 지금 사이에 일어날 수있는 일.
$ cat .hg/hgrc
[paths]
default = ssh://hg@bitbucket.org/tshepang/bloog
$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa':
pushing to ssh://hg@bitbucket.org/tshepang/bloog
searching for changes
...
답변
ssh 에이전트를 사용해야합니다. 짧은 답변 : 시도
$ ssh-add
밀기 전에. 요청시 암호를 입력하십시오.
ssh 에이전트를 아직 실행하지 않은 경우 다음 메시지가 표시됩니다.
Could not open a connection to your authentication agent.
이 상황에서 하나를 시작하고 그에 따라 환경을 설정할 수 있습니다
eval $(ssh-agent)
그런 다음 ssh-add
명령을 반복하십시오 .
ssh 에이전트 맨 페이지를 살펴볼 가치가 있습니다.
답변
이 문제를 해결하는 방법은 다음 ssh-agent
과 ssh-add
같습니다.
$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
이 후 암호는 현재 세션에 저장됩니다. 다시 묻지 않습니다.
답변
ssh 키 관리를 위해 Keychain 을 사용 합니다. 데비안에서도 사용할 수 있으며 아마도 우분투에서
apt-get install keychain
데비안 키 체인 패키지 페이지 는 다음과 같습니다 . 보시다시피, 프로젝트는 활발하지 않지만 나를 위해 일합니다. 나는 또한 여기 에 또 다른 대답으로 이것에 대해 조금 언급했습니다.
답변
다음 ~ / .ssh / config 파일을 작성하십시오 (있는 경우 편집).
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
답변
편의상 최적의 방법은 jmtd 와 Faheem 의 답변을 조합 한 것입니다 .
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
키 에 액세스 하여 원격 리포지토리로 푸시 할 수 있습니다.
답변
당신은 사용할 수 있습니다 sshpass
:
$ sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server
sshpass -p yourpassphrase
일반적인 ssh
명령 을 추가 하기 전에 추가해야합니다 .