Stopping SSH Agent when closing Git Bash on Windows - windows

After being hesitant of using ssh-agent for quite a while now, I finally decided to use it. I am typically on Windows working with git-bash. I was glad to find a helpful question about Running SSH Agent when starting Git Bash on Windows.
However, I did not find a question answering the opposite problem. How do you automatically close the ssh-agent when closing the git-bash.
A blog post about best pratices with ssh-agent triggered this idea. However, the solution there doesn't seem to fit 100% to my environment. I am not too familiar with all the configuration possibilities of Linux systems. But I figured that for .logout and.bash_logout to work you need to (a) start the shell as a login shell and (b) need to leave the shell using exit or logout commands.
Luckily, (a) seems to be the standard for git-bash. With the solution of the blog post the ssh-agent is stopped when I exit,logout the git-bash. As a Windows guy, however, most of the time I close everything - including command prompts - by means of the UI (the X marks the spot). From that some questions arise:
Can you adapt the .logout,.bash_logout solution to also consider closing the git-bash via UI?
If not, what would be a solid alternative?
In either way, when multiple git-bash windows are open, how would you prevent stopping the ssh-agent as soon as the first git-bash is closed? Ideally, ssh-agent should only be stopped after the last git-bash is closed.
Is there a completely different, preferable way of managing ssh-agent in a Windows environment.

Related

using git-posh or/and oh-my-posh with Command Prompt(cmd, not Powershell) inside windows terminal

Recently switched to new windows terminal, and after hours of searching on internet I was not able to find anything helpful, all what I want is to set up cmd inside new windows terminal to show git branches just like it's achievable for powershell.
eg like this
I have been very comfortable with cmd especially with its ability to use additional linux commands and don't wanna switch to powershell only because of nice displays of git branches. this is a source where everything is nicely explained for powershell, all I want is to do the same for CMD.
thanks in advance
In order to use Oh My Posh for shell-prompt customization from cmd.exe, the legacy Windows shell (citing from the docs (tab cmd)):
There's no out of the box support for Windows CMD when it comes to custom prompts. There is however a way to do it using Clink, which at the same time supercharges your cmd experience. Follow the installation instructions and make sure you select autostart.
As you later discovered, this issue on GitHub has background information on why native cmd.exe support isn't possible (even though Oh My Posh is generally shell-agnostic) and why third-party software is needed to make it work.
As for your comments re preferring cmd.exe:
I have been very comfortable with cmd
Migrating from the shell one is used to a new one is undoubtedly a painful transition, but well worth considering in this case:
While not without its quirks, PowerShell is vastly superior in just about every respect to cmd.exe, and enables you to do things you simply cannot do in cmd.exe
its ability to use additional linux commands
Linux (WSL) commands called from the Windows side are all mediated via executables (notably wsl.exe and bash.exe), which you can equally call from PowerShell.

How is using WSL bash in vscode through the remote WSL extension different from using it by selecting as default shell while in windows?

Before I knew about the remote WSL extension for vscode, I had been using bash in it by selecting it as the default shell from the terminal option. What is the advantage of using remote WSL if all I wanted was to just use bash as the default terminal?
Hi Rohan and welcome to SO!
I'll have a shot at answering this, though someone more knowledgeable might have better insight.
When you load VSCode in windows, it accesses your various PC resources as windows resources. For example your files will be from the windows folder structure. Even if you use WSL bash as your terminal, VSCode is still acting on a windows basis.
If you use the remote WSL extension, it leverages VSCodes separation of UI and Backend by remotely starting a VSCode backend in the WSL layer, and connecting the windows UI to that backend ('remotely' although on the same PC). Due to running the backend in a linux environment, the files are loaded as linux files and handled via the WSL system, rather than normal windows access.
With regard to the question 'What is the advantage?' I would suggest the advantage is that now instead of having a split between VSCode in windows and command line in WSL, you now have both acting in harmony through WSL. It should provide some benefits (especially when WSL2 hits properly and performance increases) around things not messing in a windows manner on files you are trying to use in a linux way, and just make things feel a bit more connected.
However if you're using WSL bash just as a command line replacement and not using it for it's linux goodness (though I don't know if this would be the case), there may be less of an advantage.
It's a stepping stone to switching to devcontainers, which are really neat.
This page might help more, but that's my understanding! https://code.visualstudio.com/docs/remote/wsl

Git ssh.exe has stopped working

I am on Windows 7, 64 bit, and have installed msysgit to work with my github repositories. On my old laptop (32 bit, also windows 7), git ran with no problems, but now git bash runs slowly (I type a command and it takes a couple of seconds for it to actually show up, character by character). When I try to push changes it works intermittently, but more often than not a dialog box comes up saying that "ssh.exe has stopped working...". I click cancel on that, and retry the command. Eventually, it works, asking for my authentication code. Once it gets to that step, it pushes without issue. It's just getting to that step that is the issue.
So basically, my problems are:
git runs slowly on most commands, even typing them in is slow before I execute the command
git bas (ssh.exe) stops working when pushing, works intermittently.
I have reinstalled windows since this issue popped up and that did not fix it.
Regarding the slow typing in git bash and cmd.exe, these other questions might have your answers:
https://superuser.com/questions/157194/typing-in-command-line-cmd-exe-is-very-slow
Msysgit bash is horrendously slow in Windows 7
The first has a solution when you're running a Lenovo Laptop (are you running on one by any chance?).
Since you indicated that even after a Windows re-install you're having the same issue, I would think it's related to hardware or some service or piece of software installed for this specific hardware.
I would also try running git bash as Administrator and see if that makes a difference.
Your SSH issue could be dependent on the other one, so I would solve the slow typing issue first.
Intermittent push, fetch and other remote commands are an indication of not enough concurrent ssh connections allocated in whatever your central repo is hosted on. Bump up the configuration to allow more concurrent secure connections. This is especially true if you are using something like gitolite or gitosis which use one user to allow access to all git users and differentiate the user based upon the public key provided.
I have the same configuration: Win 7 64bit, Msysgit and github. I'we faced the "ssh.exe has stopped working" problem as you did, when pushing to github.
I solved it by using another ssh.exe: I installed Cygwin, and copied over all the binaries to the git's binary folder.
I think that if during the msysgit installation, you specify an external ssh client to use, you can avoid this hack, but at the moment this seemed like a good idea.
I also faced this issue. ssh.exe, the one which git was using, was also being used by OpenSSH which I was running to connect to my US office. I've also installed TortoiseSVN which has its own ssh.exe.
I uninstalled Git and while re-installing I configured Git to use the ssh.exe that's part of TortoiseSVN, and this problem went away.
I faced the same issue today. Disabled the antivirus and it worked perfectly.

Git on windows :| [duplicate]

This question already has answers here:
Using Git on Windows
(5 answers)
Closed 5 years ago.
i've been experimenting with git as my personal code rep.. and it has been a bit of a disaster with windows.
i've used Subversion, CVS, and Perforce in the past.. none were as annoying to use as git.
i've figured out the PGP part (for github), although my workstation no longer lets me check in, and after searching around it turns out that git bash is using putty which is not that reliable and should be configured with something else..
i was not able to configure it with windows shell extension for a nice visual of what is part of the repository, what is modified, and easy check ins, and easy pushes..
has anyone successfully configured some kind of windows shell client and can efficiently and quickly synchronize various machines?
It just seems to be more pain to use than it is worth..
I use http://code.google.com/p/msysgit/ to great success. I get a nice cygwin bash shell. And even git gui works just fine.
I avoid all shell extensions (except for git-bash shell here, which is trivial) the vast majority of easy things can be achieved from git gui and gitk
My advice is to stay away from cygwin git. I found it unreliable, and making it use an ssh agent like pageant is a nightmare. msysgit and plink is the best combination. Also, don't mess around with line-endings: check out as-is, commit as-is.
As a graphical frontend, I like Git Extensions, which comes bundled with msysgit, and is more reliable than TortoiseGit, which is a shell extension that frequently takes down the entire Windows Explorer in flames...

How to spawn Linux process from Windows application?

My interactive 32-bit Windows app (now moving from Delphi [Ent] 2007 to 2009) uses command-line interactions to spawn child processes that do computationally-intensive tasks, which in turn write text files that the GUI parent app parses and analyzes - resulting in an interactive graphical display of the results.
I have access to a multiprocessor (multi-user) Linux cluster (via ssh), and would like to off-load the heavy lifting to that cluster. My question is how to spawn the processes in Linux from my Windows app. I can envision using secure FTP to put and get files, but not sure how to spawn the child processes in Linux.
Some leads for further reading would be fine - but code/pseudocode would be ideal. I can imagine that this may be more about Windows-Linux interaction than Delphi.
if you have access to ssh, one option is to issue commands through that.
For example:
ssh user#host ls -l ~
will in the ssh terminal show the files in the user's home directory. I'm not sure if this is what you really want. But it would likely work.
If you do this, you almost certainly want to setup SSH password less logins
However, A more ideal solution would likely be to setup a daemon on the linux boxes whose sole job is to run specific long running tasks in the background and let you fetch the results later.
You're going to have to install something on the Linux machine to run the process. You might find some kind of clustering or batch job submission API you can install and access from Windows. You might have to code a custom server. You might be able to run everything over ssh if you can drive an ssh process from Windows and if you have sshd installed on the Linux side. But my preference would be to write a webservice or simple CGI script on the Linux side designed to take your arguments and data and return the result over plain old http (or https as the case might be).
One way or another, this is going to encompass more than just coding on the Windows side.
I would download the full "putty" package.
As well as the excellent secure shell terminal, it includes PSCP to transfer files securely and PLINK to remote execute commands over SSH.
Hint: you will need to set up the full public/private key configuration for PLINK to work without an annoying password prompt. There is a useful guide http://unixwiz.net/techtips/putty-openssh.html>here.

Resources