Zenn
👷‍♂️

Azure DevOpsのSSH接続で“shell request failed”が出る理由とその対処法

に公開

Azure DevOpsのSSH接続とGit操作の違いをわかりやすく解説

はじめに

こんにちは!株式会社ヘッドウォータースの新卒2年目の矢野と申します。

最近、Azure DevOpsのリポジトリにSSH接続しようとした際、shell request failed on channel 0 という謎のエラーメッセージに遭遇しました。最初は「え、失敗してるの!?」と焦ったのですが、調べてみると実はこれ、問題ではなく、むしろ正常な動作だったんです。

この記事では、Azure DevOpsのSSH接続がどのように機能しているのか、なぜ git pull はできるのに ssh コマンドではログインできないのかを、初心者の方にもわかりやすく解説していきます。


Azure DevOpsのSSH接続とは

Azure DevOpsでは、Git操作(clonepullpushなど)を安全に行うために、SSH鍵を使った認証をサポートしています。GitHubやGitLabと同様に、SSH接続を使うことで毎回ユーザー名とパスワードを入力せずに済みます。

ただし、ここで1つ注意点があります。

ssh -T git@ssh.dev.azure.com

このように直接SSH接続しようとすると、以下のようなエラーが出ます:

remote: Shell access is not supported.
shell request failed on channel 0

これ、実は正常な動作なんです。


Git操作とシェル操作の違い

Git操作(Git over SSH)

  • git pullgit pushgit clone などのGitコマンドは、裏側でSSHを使ってAzure DevOpsと通信します。
  • これはあくまでGit専用のプロトコルであり、シェルにログインしてコマンドを実行するためのものではありません。

シェル操作(通常のSSH)

  • ssh ユーザー@ホスト のように、リモートサーバーにログインしてbashなどのシェルを使うこと
  • Azure DevOpsではこのような操作は許可されていません

実際の挙動を確認してみる

SSH鍵の準備ができている状態で、以下のコマンドを実行してみます:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_azure
ssh -T git@ssh.dev.azure.com

その結果:

remote: Shell access is not supported.
shell request failed on channel 0

これが出れば、認証には成功しているということです!


たとえ話:Azure DevOpsはオフィスビル

Azure DevOpsは、Gitの操作は受け付けるけれど、サーバー内部に入って自由に操作することはできない、いわばセキュリティの厳しいオフィスビルのような存在です。

  • ✅ 荷物(コード)を出し入れできる(Git操作)
  • ❌ 中に入って作業(シェル操作)はできない(門前で拒否される)

Gitでできることは、あくまで「玄関でのやり取り」に限定されているイメージです。


まとめ

  • Azure DevOpsでは、Git操作はSSHを使って安全に行える
  • ただし、ssh コマンドでのログイン(シェル操作)はサポートされていない
  • shell request failed はエラーではなく、正常な反応
  • Git over SSH と通常のSSHアクセスの違いを理解することが大事

少しでも「なんだこれ!?」を減らせる記事になっていれば嬉しいです。
ご覧いただきありがとうございました!

ヘッドウォータース

Discussion

ログインするとコメントできます