git-ecosystem / git-ecosystem/git-credential-manager

GCM on VS Code remote SSH linux box

Open
#1,908 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

auth-issue platform:linux
Dominant language
C#
Stars
9.3k
Forks
2.9k
Avg merge
7d 1h
Merged PRs (30d)
14

Description

Version

2.6.1+786ab03440ddc82e807a97c0e540f5247e44cec6

Operating system

Linux

OS version or distribution

Ubuntu 24.04.2 LTS

Git hosting provider(s)

Bitbucket Cloud

Other hosting provider

No response

(Azure DevOps only) What format is your remote URL?

None

Can you access the remote repository directly in the browser?

Yes, I can access the repository

Expected behavior

I am running a VS Code remote environment (SSH) to an ubuntu linux server. I have git credential helper installed on the linux machine. I run a simple git clone and I expect it should open up a browser to authenticate on my host machine, which would allow me to authenticate to Bitbucket in the browser and redirect the credentials to the remote machine, at least through a localhost port forward.

Is there a way to run git-credential-manager on a remote linux machine in vs code?

Actual behavior

It prompts me for an inline username/password and does not open the browser

Logs

Diagnose log at 2025-04-29T02:08:25Z

AppPath: /root/.dotnet/tools/git-credential-manager
InstallDir: /root/.dotnet/tools/.store/git-credential-manager/2.6.1/git-credential-manager/2.6.1/tools/net8.0/any/
Version: 2.6.1+786ab03440ddc82e807a97c0e540f5247e44cec6


Diagnostic: Environment
Skipped: False
Success: True
Exception: None
Log:
OSType: Linux
OSVersion: Ubuntu 24.04.2 LTS
Reading environment variables... OK
Variables:
PWD=/root
LANG=C.UTF-8
DOTNET_BUNDLE_EXTRACT_BASE_DIR=/root/.cache/dotnet_bundle_extract
LESSCLOSE=/usr/bin/lesspipe %s %s
GIT_EXEC_PATH=/usr/lib/git-core
SHLVL=1
PATH=/usr/lib/git-core:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/.dotnet/tools
TERM=xterm-256color
USER=root
SHELL=/bin/bash
LOGNAME=root
_=/usr/bin/git
MAIL=/var/mail/root
LESSOPEN=| /usr/bin/lesspipe %s
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.avif=01;35:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.webp=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:.xspf=00;36:~=00;90:#=00;90:.bak=00;90:.crdownload=00;90:.dpkg-dist=00;90:.dpkg-new=00;90:.dpkg-old=00;90:.dpkg-tmp=00;90:.old=00;90:.orig=00;90:.part=00;90:.rej=00;90:.rpmnew=00;90:.rpmorig=00;90:.rpmsave=00;90:.swp=00;90:.tmp=00;90:.ucf-dist=00;90:.ucf-new=00;90:*.ucf-old=00;90:
GPG_TTY=/dev/pts/1
HOME=/root
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
GIT_TRACE2_PARENT_SID=68782f59-e795-4d37-b3b7-ffcc927832db


Diagnostic: File system
Skipped: False
Success: True
Exception: None
Log:
Temporary directory is '/tmp/'...
Checking basic file I/O...
Writing to temporary file '/tmp/a6064b44965616ae4d957015'... OK
Reading from temporary file '/tmp/a6064b44965616ae4d957015'... OK
Deleting temporary file '/tmp/a6064b44965616ae4d957015'... OK
Testing IFileSystem instance...
UserHomePath: /root
UserDataDirectoryPath: /root/.gcm
GetCurrentDirectory(): /root

Diagnostic: Networking
Skipped: False
Success: True
Exception: None
Log:
Checking networking and HTTP stack...
Creating HTTP client... OK
IsNetworkAvailable: True
Sending HEAD request to http://example.com...Sending HEAD request to https://example.com... OK
OK
Acquiring free TCP port... OK
Testing local HTTP loopback connections...
Creating new HTTP listener for http://localhost:35989/... OK
Waiting for loopback connection... OK
Writing response... OK
Waiting for response data... OK
Loopback connection data OK


Diagnostic: Git
Skipped: False
Success: True
Exception: None
Log:
Getting Git version... OK
Git version is '2.43.0'
Locating current repository...Not inside a Git repository.
OK
Listing all Git configuration... OK
Git configuration:
file:/root/.gitconfig credential.credentialstore=gpg
file:/root/.gitconfig credential.helper=cache --timeout 21600
file:/root/.gitconfig credential.helper=oauth


Diagnostic: Credential storage
Skipped: False
Success: True
Exception: None
Log:
ICredentialStore instance is of type: CredentialStore
Writing test credential... OK
Reading test credential... OK
Deleting test credential... OK


Diagnostic: Microsoft authentication (AAD/MSA)
Skipped: False
Success: True
Exception: None
Log:
Broker is not enabled.
Flow type is: Auto
Gathering MSAL token cache data... OK
CacheDirectory: /root/.local/.IdentityService
Gathering MSAL token cache data... OK
CacheDirectory: /root/.local/.IdentityService
CacheFileName: msal.cache
CacheFilePath: /root/.local/.IdentityService/msal.cache
KeyringCollection:
KeyringSchemaName:
KeyringSecretLabel:
KeyringAttribute1: (,)
KeyringAttribute2: (,)
Creating cache helper... OK
Verifying MSAL token cache persistence... OK


Diagnostic: GitHub API
Skipped: False
Success: True
Exception: None
Log:
Using 'https://github.com/' as API target.
Querying '/meta' endpoint... OK

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue identifies Git Credential Manager 2.6.1 on Ubuntu 24.04 in a VS Code Remote SSH environment, but names no source files or tests. Start by reproducing the Bitbucket clone and browser-authentication flow, then identify the relevant remote Linux and localhost forwarding entry points; done means a documented or implemented authentication flow that opens the browser on the host and returns credentials to the remote machine.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, git, linux, vscode
Domain
authentication, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.