Git 서버 Bash 및 SSH

Git 서버 Bash 및 SSH

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_keysmatt2[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를 실행할 때 실행되지 않기 때문에 이 내용이 표시되지 않습니다.

관련 정보