1. ホーム
  2. git

[解決済み] ログイン時にssh-agentを起動する [終了しました]。

2022-03-16 04:35:58

質問

私は、Bitbucket.com から SSH エイリアスを使用してプルするリモート Git リポジトリとしてサイトを持っています。サーバー上で ssh-agent を手動で起動することはできますが、SSH でログインするたびにこれを実行しなければなりません。

手動でssh-agentを起動させています。

eval ssh-agent $SHELL

次に、エージェントを追加します。

ssh-add ~/.ssh/bitbucket_id

そうすると、表示されるんです。

ssh-add -l

そして、私は行くのに問題ありません。このプロセスを自動化して、ログインするたびにやらなくてもいいようにする方法はないでしょうか?サーバーはRedHat 6.2 (Santiago)が動作しています。

解決方法は?

こちらの記事をご覧ください。とても役に立つと思います。

https://web.archive.org/web/20210506080335/https://mah.everybody.org/docs/ssh

上記のリンクがいつか消えてしまうことを想定して、解決策の主要な部分を以下に捕捉しておきます。

<ブロッククオート

この解答はJoseph M. ReagleからDaniel Starin経由のものです。

以下のように、あなたの .bash_profile

SSH_ENV="$HOME/.ssh/agent-environment"

function start_agent {
    echo "Initialising new SSH agent..."
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    #ps ${SSH_AGENT_PID} doesn't work under cywgin
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

このバージョンは特に優れていて、すでに ssh-agent が起動しているかどうかを確認し、見つからない場合は起動して設定を保存し、次にシェルを起動したときに使用できるようにします。