[unix] Bitbucket으로 푸시 할 때마다 암호 문구를 피하는 방법

이 안내서 의 도움으로 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-agentssh-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


답변

편의상 최적의 방법은 jmtdFaheem 의 답변을 조합 한 것입니다 .

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명령 을 추가 하기 전에 추가해야합니다 .


답변