답변:
ssh-add
당신이 필요로하는, ssh-agent
실행 및 개인 키를 들고있는(Ok, 업데이트 된 질문에 응답하여 Jefromi가 설명 한ssh-keygen
것처럼 공개 및 개인 키를 생성하기 위해 먼저 실행 합니다 . 공개 키를 서버에 넣습니다. 개인 키에 -text 암호를 입력해야하지만 그렇게하면 아래 설명 된대로 실용적 문제가 필요 합니다.) ssh-agent
ssh-agent
로그인 할 때 백그라운드에서 실행하려고합니다 . 로그인 한 후에 ssh-add
는 에이전트에 암호를 제공하고 키를 해독하기 위해 한 번만 실행하는 것이 좋습니다 . 그런 다음 에이전트는 키를 잠금 해제하고로드하여 메모리에 앉아 방금 ssh 할 때마다 사용할 수 있습니다.
그런 다음 모든 ssh-family 명령 1 은 에이전트를 참조하여 자동으로 개인 키를 사용할 수 있습니다.
OSX (err, macOS )에서 그놈 및 KDE 시스템 ssh-agent
은 일반적으로 자동으로 시작됩니다. 저와 같이 Cygwin 또는 다른 Windows 환경이 가장 확실하게 수행되지 않는 경우 세부 사항을 살펴 보겠습니다.
여기서 시작하십시오 man ssh-agent
.
에이전트를 자동으로 실행하는 다양한 방법이 있습니다. 매뉴얼 페이지에서 설명하는 것처럼 모든 로그인 세션의 다른 프로세스의 부모가되도록 실행할 수 있습니다. 그렇게하면 환경 변수가 자동으로 모든 쉘에있게됩니다. (나중에) 호출 할 때 ssh-add
또는 ssh
둘 다 에이전트에 매직 소켓 경로 이름 또는 기타 환경 변수가 있으므로 에이전트에 액세스 할 수 있습니다.
또는 에이전트를 일반 하위로 실행하고 환경 설정을 파일에 저장 한 다음 시작할 때 모든 셸에서 해당 파일을 소싱 할 수 있습니다.
내 OSX 및 Ubuntu 시스템은 에이전트 실행 설정을 자동으로 수행하므로 ssh-add
한 번만 실행 하면됩니다. 실행을 시도 ssh-add
하고 작동하는지 확인하십시오. 그렇다면 재부팅 할 때마다 한 번만 수행하면됩니다.
내 Cygwin에서 시스템 내에서 이런 짓을 그래서, 수동으로 필요 .profile
하고 내가 가진 .bashrc
소스를 .profile
:
. .agent > /dev/null
ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
ssh-agent > .agent
. .agent > /dev/null
}
.agent
파일은 스크립트에 의해 자동으로 생성됩니다; 환경 변수 정의 및 내보내기가 포함됩니다. 위의 방법으로 .agent 파일을 제공 한 다음 ps(1)
에이전트 를 시도합니다 . 작동하지 않으면 에이전트를 시작하고 새 에이전트 파일을 만듭니다. 또한 실행할 수 있으며 ssh-add
실패하면 에이전트를 시작하십시오.
sudo
올바른 pam 확장자를 가진 로컬 및 원격조차도 .
ssh-agent
아마 사용하는 것이 더 좋을 것입니다.eval `ssh-agent`
HTTPS 프로토콜을 사용하고 있었기 때문에 GitHub와 비슷한 문제가있었습니다. 사용중인 프로토콜을 확인하려면 실행하십시오.
git config -l
로 시작하는 줄을보십시오 remote.origin.url
. 프로토콜을 전환하려면
git config remote.origin.url git@github.com:your_username/your_project.git
Permission denied
오류가 발생했습니다.
git remote set-url origin git@github.com:your_username/your_project.git
이것은 git이 아닌 ssh를 구성하는 것입니다. 아직 ssh-keygen
암호를 입력 하지 않은 경우 빈 암호를 사용하여 키 페어를 만들어야합니다. 그런 다음을 사용하여 공개 키를 원격 대상에 복사합니다 ssh-copy-id
. 여러 키가 필요하지 않은 경우 (예 : 다른 목적을 위해 암호가있는 더 안전한 키) 또는 여러 가지 이상한 신원 확인이 진행되지 않는 한 다음과 같습니다.
ssh-keygen # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@host
편집 : 당신은 실제로 DigitalRoss의 대답을 읽어야하지만 암호를 사용하여 키를 사용하는 경우 키 ssh-add <key-file>
를 추가해야합니다 ssh-agent
( ssh-agent
배포에 아직 실행중인 것이 없다면 시작해야 합니다).
ssh-agent
과 같습니다. 그는 암호 구간 문제를 우회하고자합니다. 내가 잘못 이해하지 않은 사람이 아니라면 다운 보팅은 아니지만이 답변을 개선해야한다고 생각합니다.
ssh-agent
입니다. 당신에게 +1!
ssh-*
스러웠을 것입니다. 즉, 키를 사용하는 데 필요한 암호를 호출하는 것입니다. 실제로 리모콘의 실제 사용자 암호를 의미 한 곳은 무엇입니까?
HTTPS를 사용하여 복제 한 경우 (권장) 다음을 수행하십시오.
git config --global credential.helper cache
그리고
git config --global credential.helper 'cache --timeout=2592000'
timeout = 2592000 (30 일 초) : 30 일 동안 캐싱을 활성화합니다 (또는 제품군).
이제 사용자 이름과 비밀번호가 필요한 간단한 git 명령을 실행하십시오.
자격 증명을 한 번 입력하면 30 일 동안 캐싱이 활성화됩니다.
git 명령으로 다시 시도하면 자격 증명이 필요하지 않습니다.
자세한 정보 : -Git에서 GitHub 비밀번호 캐싱
참고 : 자격 증명 도우미를 사용하려면 Git 1.7.10 이상이 필요합니다. 시스템을 다시 시작할 때 암호를 다시 입력해야 할 수도 있습니다.
git-bash 또는 터미널에서 명령을 실행하는 것보다 파일을 직접 편집하는 것을 선호하는 사람들을 위해 Muein의 생각을 확장합니다.
프로젝트의 .git 디렉토리 (로컬 시스템의 프로젝트 루트)로 이동하여 'config'파일을여십시오. 그런 다음 [remote "origin"]을 찾아 다음과 같이 url 구성을 설정하십시오.
[remote "origin"]
#the address part will be different depending upon the service you're using github, bitbucket, unfuddle etc.
url = git@github.com:<username>/<projectname>.git
여기에 다른 두 가지가 있다고 생각합니다. 첫 번째는 정상적인 SSH 인증을 위해서는 사용자가 계정의 비밀번호를 입력해야한다는 것입니다 (sshd 구성에 따라 다른 방법으로 계정 비밀번호가 인증 됨).
인증서를 사용하여 비밀번호를 입력하지 않아도됩니다. 인증서를 사용하면 여전히 비밀번호를 입력해야하지만 이번에는 개인 키의 비밀번호입니다 (계정의 비밀번호와 무관).
이를 위해 steveth45가 지적한 지침을 따를 수 있습니다.
와 공개 키 인증 .
매번 인증서의 비밀번호를 입력하지 않으려면 DigitalRoss가 지적한 ssh-agent를 사용할 수 있습니다
이 작업을 수행하는 정확한 방법은 Unix와 Windows에 따라 다르지만 기본적으로 로그인 할 때 백그라운드에서 ssh-agent를 실행 한 다음 처음 로그인 할 때 ssh-add를 실행하여 에이전트에 암호를 입력하십시오. 그런 다음 모든 ssh-family 명령은 에이전트에게 문의하여 자동으로 암호 문구를 선택합니다.
여기에서 시작하십시오 : man ssh-agent.
ssh-agent의 유일한 문제점은 * nix에서 모든 새 쉘에 인증서 비밀번호를 입력해야한다는 것입니다. 그런 다음 인증서가 "로드"되고 어떤 종류의 암호도 입력하지 않고 ssh 서버에 대해 인증하는 데 사용할 수 있습니다. 그러나 이것은 특정 껍질에 있습니다.
키 체인 을 사용하면 ssh-agent와 동일하지만 "시스템 전체"를 수행 할 수 있습니다. 컴퓨터를 켜면 쉘을 열고 인증서 비밀번호를 입력합니다. 그런 다음 다른 모든 셸은 해당 "로드 된"인증서를 사용하며 PC를 다시 시작할 때까지 암호를 다시 묻지 않습니다.
Gnome에는 그놈 키링 ( Gnome Keyring )이라는 비슷한 응용 프로그램이 있는데,이 인증서를 처음 사용할 때 인증서 암호를 묻는 다음 안전하게 저장하므로 다시 묻지 않습니다.
AddKeysToAgent yes
.ssh / config를 하여 있습니다. 컴퓨터 끌 때까지의 메모리에로드
github을 사용하는 경우 더 명확하게 설명하는 멋진 자습서가 있습니다 (적어도 나에게).
ssh-keygen -t rsa
암호 구를 물으면 빈칸으로 두십시오. 즉, 그냥 Enter를 누르십시오. 저것과 같이 쉬운!!
ssh 키로 로그인을 허용하지 않고 사용자 / 비밀번호로만 서버에서 git repo를 복제해야했습니다. 간단한 사용자 / 암호 조합을 사용하도록 Git 플러그인을 구성 할 수있는 방법을 찾지 못했기 때문에 Linux 빌드 머신에서 pre-step 단계로 다음 쉘 명령을 추가했습니다.
암호가 젠킨스 작업의 구성 및 로그에 명확한 텍스트로 표시되어 있으므로이 문제를 해결하는 좋은 방법은 아닙니다! RSA 키 인증 또는 기타 구성 가능성을 구성 할 방법이없는 경우에만 사용하십시오!
rm -rf $WORKSPACE &&
expect -c 'set timeout -1; spawn git clone USER@MYHOST:/MYPATH/MYREPO.git $WORKSPACE; expect "password:" {send "MYPASSWORD\r"}; expect eof'
AddKeysToAgent yes
.ssh / config 파일 맨 위에 한 줄 을 추가 하십시오. 물론 ssh-agent가 미리 실행 중이어야합니다. 실행되지 않으면 (확인 prep ssh-agent
), 간단히 실행하십시오.eval $(ssh-agent)
이제 키가 시스템 전체에 메모리에로드되므로 암호를 다시 입력 할 필요가 없습니다.
솔루션의 출처는 /ubuntu/362280/enter-ssh-passphrase-once/853578#853578입니다.
Windows에서 ssh를 사용하고 있기 때문에 암호 문구를 항상 입력하지 않도록 노력하고 있습니다. 내가 한 것은 내 .profile 파일을 수정하여 특정 세션에서 암호를 입력하는 것입니다. 그래서 이것은 코드 조각입니다.
SSH_ENV="$HOME/.ssh/environment"
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
echo succeeded
chmod 600 "$SSH_ENV"
. "$SSH_ENV" > /dev/null
ssh-add
}
# test for identities
function test_identities {
# test whether standard identities have been added to the agent already
ssh-add -l | grep "The agent has no identities" > /dev/null
if [ $? -eq 0 ]; then
ssh-add
# $SSH_AUTH_SOCK broken so we start a new proper agent
if [ $? -eq 2 ];then
start_agent
fi
fi
}
# check for running ssh-agent with proper $SSH_AGENT_PID
if [ -n "$SSH_AGENT_PID" ]; then
ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
if [ $? -eq 0 ]; then
test_identities
fi
# if $SSH_AGENT_PID is not properly set, we might be able to load one from
# $SSH_ENV
else
if [ -f "$SSH_ENV" ]; then
. "$SSH_ENV" > /dev/null
fi
ps -fU$USER | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
if [ $? -eq 0 ]; then
test_identities
else
start_agent
fi
fi
그래서이 세션에서 암호를 한 번 입력하십시오.
AWS 제안에서 git clone을 수행 할 수 있도록 이러한 제안 등을 모두 시도했습니다. 아무것도 효과가 없었습니다. 마지막으로 절망에서 벗어났습니다. 로컬 컴퓨터에서 id_rsa.pub의 내용을 복사하여 AWS 인스턴스의 ~ / .ssh / known_hosts에 추가했습니다.