Ubuntu 10.04 LTS를 실행하는 Linode VPS에서 SSH를 통해 Git을 사용하고 싶습니다.
실제로 SSH 키가 이미 설정되어 있다는 점을 고려하면 지침은 충분히 간단해 보였습니다.
내가 해야 할 일은 로컬 저장소에 서버로 보내도록 지시하는 것뿐입니다.
ssh://[email protected]:22/~/mygits/proj1.git
문제는 git push origin master
이 작업을 수행할 때 네트워크 활동도 없고 오류도 없이 작동이 정지되고 몇 분 후에 Ctrl-C를 눌러 종료한다는 것입니다. 문제를 진단하기 위해 어제 누군가를 보냈습니다. 그래서 서버에서 새 사용자를 설정 하고 viola에 복사 matt2
하여 푸시를 시도했는데 작동했습니다.authorized_keys
matt2
[email protected]:22
매트와 매트2의 차이점은 무엇인가요? Matt는 ssh 에이전트가 실행 중인지 확인하기 위해 자신의 .bash_profile에 이 기능을 가지고 있습니다. (저는 이 기능이 많이 필요합니다.)
# Start/Reuse SSH Agent - restart or re-use an existing agent
SSH_AGENT_CACHE=/tmp/ssh_agent_eval_`whoami`
if [ -s "${SSH_AGENT_CACHE}" ]
then
echo "Reusing existing ssh-agent"
eval `cat "${SSH_AGENT_CACHE}"`
# Check that agent still exists
kill -0 "${SSH_AGENT_PID}" 2>-
if [ $? -eq 1 ]
then
echo "ssh-agent pid ${SSH_AGENT_PID} no longer running"
# Looks like the SSH-Agent has died, it'll be restarted below
rm -f "${SSH_AGENT_CACHE}"
fi
fi
if [ ! -f "${SSH_AGENT_CACHE}" ]
then
echo "Starting new ssh-agent"
touch "${SSH_AGENT_CACHE}"
chmod 600 "${SSH_AGENT_CACHE}"
ssh-agent >> "${SSH_AGENT_CACHE}"
chmod 400 "${SSH_AGENT_CACHE}"
eval `cat "${SSH_AGENT_CACHE}"`
ssh-add
.bash_profile
그래서 SSH를 통해 git을 운영하는 것과 충돌이 있는 것 같습니다 . 해결 방법에 대한 제안 사항이 있습니까?
2개의 사용자 계정을 사용하고 싶지 않고 내 계정을 유지하고 싶습니다. .bash_profile.
.bash_profile을 편집하고 기능을 래핑할 수 있다면 좋겠지 if [ $connectingWith != "git-client" ]
만 그런 것이 존재하는지 의심스럽습니다.
아이디어?
답변1
문제는 당신의 에코라고 확신합니다 .bashrc
. .bashrc
터미널에서 실행되지 않을 때는 아무 것도 인쇄하지 마세요. 자동화를 위해 ssh를 사용하는 프로그램(rsync, git 등)이 중단될 수 있습니다.
실제로 .bashrc
터미널에서 실행되고 있지 않다면 아무 것도 해서는 안 됩니다. 파일 시작 부분에 이것을 넣으십시오.
if ! [ -t 1 ]; then return; fi
이 .bashrc
파일은 대화형 쉘용입니다. 대화형인지 여부에 관계없이 모든 rsh 및 ssh 로그인에 대해 이 파일을 로드하는 bash에는 이상한 점이 있습니다. 이는 비대화형 SSH 세션에 대한 환경 변수를 설정할 수 있기 때문에 유용할 때도 있지만 이는 대화형 설정(프롬프트, 키 바인딩, 별칭 등)과는 완전히 다릅니다. 일반적으로 말해서, .bashrc
관련되지 않은 두 부분이 될 수 있습니다.
if [ -t 1 ]; then
# Stuff for interactive bash shells (defined here as shells running in a terminal).
# Prompt, key bindings, aliases, terminal settings, …
# It's ok to print things to the terminal here (e.g. to set the terminal title).
else
# Environment variables for ssh sessions.
# Do not print anything here.
fi
참고 사항: 대화형 SSH 로그인의 경우 bash가 로그인 쉘이면 읽혀지지만 .bash_profile
는 읽히지 않습니다 . 소스에서 소스 코드를 가져와야 .bashrc
합니다 (쉘이 대화형인 경우)..bashrc
.bash_profile
답변2
무시하세요. .bashrc의 무언가가 문제를 일으키고 있습니다. SSH를 실행할 때 실행되지 않기 때문에 이 내용이 표시되지 않습니다.