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
関係のない2つの部分にすることができます。
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を実行しても実行されないため、この内容は表示されません。