Capistrano で Exception while executing ...... Permission denied (SSHKit::Runner::ExecuteError) でハマった話

背景

かなり特殊な経緯です。

  • 以前はデプロイ先のユーザは root でデプロイしていた
  • それを一般ユーザに変えようとした
  • そうすると表題のエラーが出た
  • SSHのログインは問題ない

結論

デプロイ先のファイルである /tmp/git-ssh-foobar-username.sh*1 を削除したら通った。

理由

エラーメッセージにもあるように*2、当該シェルスクリプトのパーミッションが原因でした。

もっと具体的に言うと、「同じファイル名のシェルスクリプト」に「ファイルを上書きしようとした」ところ、「もともとあったファイルは root で作られたもの」なので、「どうにもこうにも上書きできずにパーミッションエラーになった」、ということです。

備考

こんな奇妙なハマり方の例はさすがに検索で見つかりませんでした。エラーログ大事です。

*1:ファイル名は適当です

*2:あるままに

Powered by はてなブログ