한 번 로그인하도록 Git over SSH 구성
ssh를 통해 git 저장소를 복제했습니다.따라서 오리진 마스터와 밀거나 당겨 통신할 때마다 암호를 다시 입력해야 합니다.암호를 여러 번 입력할 필요가 없도록 git을 구성하려면 어떻게 해야 합니까?
HTTPS 프로토콜을 사용했기 때문에 GitHub에도 비슷한 문제가 있었습니다.사용 중인 프로토콜을 확인하려면 그냥 실행
git config -l
리고다음시선로보을세요는작하으로 .remote.origin.url
프로토콜을 전환하려면 다음과 같이 하십시오.
git config remote.origin.url git@github.com:your_username/your_project.git
ㅠㅠssh-add
니가 필요한ssh-agent
키를 있습니다.
( (으)로 ssh-keygen
제프로미가 설명한 대로 공개 및 개인 키를 생성합니다.공용 키를 서버에 놓습니다.개인 키에 일반 텍스트 암호와 동일한 암호가 없는 경우 암호를 사용해야 합니다.하지만 그럴 때는 현실적인 문제로ssh-agent
아래 설명된 바와 같이.
당신은 달리기를 원합니다.ssh-agent
백그라운드에서 로그인합니다.일단 로그인하면 실행하는 것이 좋습니다.ssh-add
한 번만 에이전트에게 암호를 지정하고 키를 디코딩합니다.그러면 에이전트는 키가 잠금 해제되고 로드된 상태로 메모리에 저장되어 어디선가 ssh할 때마다 사용할 수 있습니다.
그러면 모든 ssh-family1 명령이 에이전트를 참조하여 사용자의 개인 키를 자동으로 사용할 수 있습니다.
OSX(err, macOS), GNOME 및 KDE 시스템에서는ssh-agent
일반적으로 자동으로 실행됩니다.저와 같이 Cygwin 또는 다른 윈도우 환경에서 이 작업이 수행되지 않을 경우를 대비하여 자세한 내용을 살펴보겠습니다.
위치: 여서시작: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
적절한 팸 확장자를 사용합니다.
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 이상이 필요합니다. 시스템을 다시 시작할 때 암호를 다시 입력해야 할 수 있습니다.
업데이트 #1:
이 오류가 발생하는 경우git: 'credential-cache' is not a git command. See 'get --help'
그런 다음 교체합니다.git config --global credential.helper 'cache --timeout=2592000'
와 함께git config --global credential.helper 'store --file ~/.my-credentials'
업데이트 #2:
사용자 이름과 암호를 묻는 메시지가 계속 표시되고 이 문제가 발생하는 경우:
로그온하지 못했습니다. 기본 자격 증명 프롬프트를 취소하려면 ctrl+c를 사용하십시오.
최신 버전의 git를 다시 설치하는 것이 저에게 효과가 있었습니다.
업데이트 #3:
비밀번호 인증확인은 차단의 일부로 일시적으로 비활성화됩니다.대신 개인 액세스 토큰을 사용하십시오.
- Github 액세스 생성상품권
- 증명 캐시를 취소합니다. " " " "
git config --global --unset credential.helper
git config --global credential.helper 'store --file ~/.my-credentials'
- 모든 git 명령어를 사용하면
username
&password
암호 대신 토큰을 입력합니다.
이것은 git가 아니라 ssh를 구성하는 것에 관한 것입니다.아직 사용하지 않으셨다면 다음을 사용해야 합니다.ssh-keygen
(공백 암호 구문 포함) 키 쌍을 만듭니다.다음 를 런그다 대공키용복를다사로 합니다.ssh-copy-id
여러 개의 키(예: 다른 용도의 암호 구문이 있는 더 안전한 키)가 필요하거나 여러 개의 키를 사용하는 이상한 다중 ID 작업이 수행되고 있지 않는 한 다음과 같이 간단합니다.
ssh-keygen # enter a few times to accept defaults
ssh-copy-id -i ~/.ssh/id_rsa user@host
Digital Ross의꼭편집: Digital Ross를 사용해야 . 암호문이 있는 키를 사용하는 경우에는ssh-add <key-file>
을 것들을에에 하는 것ssh-agent
(그리고분시다니합작히명▁up▁an)를 시작합니다.ssh-agent
배포판에 아직 실행 중인 배포판이 없는 경우).
저장소를 복제할 때 HTTPS가 아닌 SSH URL로 복제했는지 확인합니다. repo의 복제 URL 상자에서 URL을 복사하기 전에 SSH 프로토콜을 선택합니다.아래 이미지 참조:
git-bash 또는 terminal에서 실행되는 명령어보다 파일을 직접 편집하는 것을 선호하는 사람들을 위해 Muin의 생각을 확장합니다.
프로젝트의 .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를 사용할 수 있습니다.
이 작업을 수행하는 정확한 방법은 유닉스와 윈도우즈에 따라 다르지만 기본적으로 로그인할 때 백그라운드에서 ssh-agent를 실행한 다음 처음 로그인할 때 ssh-add를 실행하여 에이전트에 암호를 지정해야 합니다.그러면 모든 ssh-family 명령어가 에이전트를 참조하여 암호를 자동으로 선택합니다.
여기서 시작합니다. man ssh-agent.
ssh-agent의 유일한 문제는 최소한 *nix에서는 모든 새 셸에 인증서 암호를 입력해야 한다는 것입니다.그런 다음 인증서가 "로드"되고 암호를 입력하지 않고 SSH 서버에 대해 인증하는 데 사용할 수 있습니다.하지만 이것은 그 특정한 껍질 위에 있습니다.
키 체인을 사용하면 ssh-agent와 동일한 작업을 수행할 수 있지만 "시스템 전체"를 수행할 수 있습니다.컴퓨터를 켜면 셸을 열고 인증서의 암호를 입력합니다.그러면 다른 모든 셸에서 해당 "로드된" 인증서를 사용하고 PC를 다시 시작할 때까지 암호를 다시 묻지 않습니다.
Gnome에는 Gnome Keyring이라는 유사한 응용 프로그램이 있는데, 이 응용 프로그램은 처음 사용할 때 인증서의 암호를 요청한 다음 다시 묻지 않도록 안전하게 저장합니다.
만약 당신이 github을 사용하고 있다면, 그들은 그것을 (적어도 나에게는) 더 명확하게 설명하는 매우 좋은 튜토리얼을 가지고 있습니다.
http://help.github.com/set-up-git-redirect/
ssh-keygen -t rsa
암호를 요청하면 비워 두십시오. 즉, Enter 키만 누르면 됩니다. 그렇게 간단합니다!!
밀어넣는 상자에서 이것을 시도합니다.
ssh git@github.com
그런 다음 github에서 환영 응답을 받아야 하며, 푸시해도 됩니다.
로그인 보기 키를 허용하지 않고 사용자/비밀번호만 사용하는 서버에서 git repo를 복제해야 했습니다.간단한 사용자/비밀번호 조합을 사용하도록 Git 플러그인을 구성할 방법을 찾지 못했기 때문에 다음 셸 명령을 도구 기대치(apt-get install expect)에 따라 달라지는 Linux 빌드 시스템의 사전 빌드 단계로 추가했습니다.
Jenkins 작업의 구성 및 로그에 암호가 일반 텍스트로 표시되므로 이 문제를 해결하는 좋은 방법은 아닙니다!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'
저는 또한 ssh on windows를 사용하고 있기 때문에 항상 암호를 입력하지 않으려고 노력하고 있습니다.제가 한 일은 제 .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
그래서 나는 이것으로 세션에서 내 암호를 한 번 입력합니다.
하기 한 줄 가AddKeysToAgent yes
파일의 맨에 .vmdk/config 파일이 .물론 ssh-agent는 사전에 실행되어야 합니다.실행 중이 아닌 경우(다음 기준으로 확인)prep ssh-agent
), 그런 다음 간단히 실행합니다.eval $(ssh-agent)
이제 키가 시스템 전체에 메모리에 로드되므로 암호를 다시 입력할 필요가 없습니다.
솔루션의 출처는 https://askubuntu.com/questions/362280/enter-ssh-passphrase-once/853578#853578 입니다.
저는 제 AWS 인스턴스에서 클론을 가져올 수 있도록 이러한 제안을 모두 시도해 보았습니다.아무 것도 효과가 없었습니다.저는 마침내 절망감에서 속았습니다.로컬 시스템에서 id_rsa.pub의 내용을 복사하여 AWS 인스턴스의 ~/.ssh/known_hosts에 추가했습니다.
언급URL : https://stackoverflow.com/questions/1595848/configuring-git-over-ssh-to-login-once
'bestsource' 카테고리의 다른 글
Woocommerce 주문 검토를 체크아웃의 맨 위로 이동 (0) | 2023.07.08 |
---|---|
SQL 스키마만 백업하시겠습니까? (0) | 2023.07.08 |
angular2에서 addClass 및 removeClass 기능 구현 (0) | 2023.07.08 |
명령줄에서 SQL 스크립트 실행 (0) | 2023.07.08 |
리베이스 후 Git 분기가 분기되었습니다. (0) | 2023.07.08 |