I am trying to clone a remote repository on Windows, but when I did this:
git clone [email protected]:organization/xxx.git
I got this error:
error: cannot run ssh: No such file or directory
fatal: unable to fork
Am I missing something?
Gino Mempin
25.8k29 gold badges98 silver badges138 bronze badges
asked Sep 24, 2012 at 17:09
Check if you have installed ssh-client
. This solves the problem on docker machines, even when ssh keys are present:
apt-get install openssh-client
ssi-anik
3,0583 gold badges23 silver badges52 bronze badges
answered May 30, 2018 at 0:18
pablorskpablorsk
3,8811 gold badge32 silver badges38 bronze badges
2
You don’t have ssh installed (or don’t have it within your search path).
You can clone from github via http, too:
git clone http://github.com/organization/xxx
answered Sep 24, 2012 at 17:11
MarkMark
6,0331 gold badge19 silver badges14 bronze badges
3
Most likely your GIT_SSH_COMMAND
is referencing the incorrect public key.
Try:
export GIT_SSH_COMMAND="ssh -i /home/murphyslaw/.ssh/your-key.id_rsa
then
git clone [email protected]:organization/xxx.git
Rob♦
27k16 gold badges82 silver badges98 bronze badges
answered Jun 28, 2017 at 6:17
rivanovrivanov
1,2241 gold badge18 silver badges19 bronze badges
1
I am aware that it is an old topic, but having this problem recently, I want to bring here what I resolve my issue.
You might have this error on these conditions :
- You use a URL like this :
[email protected]:organization/repo.git
- And you run a kind of command like this directly :
git clone [email protected]/xxxxx.git
whereas you don’t have ssh client (or it is not present on path) - Or you have an ssh client installed (and
git clone xxx.git
work fine on direct command line) but when you run the same kind of command through a shell script file
Here, I assume that you don’t want to change protocol ssh git@
to http://
([email protected]:organization/repo.git
-> http://github.com/organization/repo.git
), like my case, cause I needed the ssh
format.
So,
- If you do not have ssh client, first of all, you need to install it
- If you have this error only when you execute it through a script, then you need to set
GIT_SSH_COMMAND
variable with your public ssh key, in front of your git command, like this :
GIT_SSH_COMMAND="/usr/bin/ssh -i ~/.ssh/id_rsa" git pull
(Feel free to change it depending on your context)
answered Mar 3, 2021 at 12:02
MahefaMahefa
4183 silver badges12 bronze badges
1
I had this issue right after my antivirus moved the cygwin ssh binary to virus vault, and restored it after.
Symptoms:
- SSH seems properly installed
- SSH can be run from command line without problem
Another option before reinstalling ssh in this particular case: check the ssh
command permissions
$ ls -al /usr/bin/ssh.exe
----rwxrwx+
$ chmod 770 /usr/bin/ssh.exe
answered Nov 28, 2018 at 11:43
user1556814user1556814
5736 silver badges19 bronze badges
I got the same error on the Alpine
container in the CI-CD
pipeline. I have added openssh
package and it worked.
RUN apk add --no-cache git openssh
answered Aug 21 at 16:53
hbceylanhbceylan
97810 silver badges10 bronze badges
You can try these as well
ssh-add ~/.ssh/identity_file
chmod 400 ~/.ssh/identity_file
answered Nov 3, 2021 at 8:36
It so happened in my case that the new pair of ssh keys linked with my git account were not accessible.
I had to sudo chmod 777 ~/.ssh/id_rsa.*
to resolve the issue.
answered Mar 23, 2022 at 12:26
Dota2Dota2
4564 silver badges16 bronze badges
I am trying to clone a remote repository on Windows, but when I did this:
git clone [email protected]:organization/xxx.git
I got this error:
error: cannot run ssh: No such file or directory
fatal: unable to fork
Am I missing something?
Gino Mempin
25.8k29 gold badges98 silver badges138 bronze badges
asked Sep 24, 2012 at 17:09
Check if you have installed ssh-client
. This solves the problem on docker machines, even when ssh keys are present:
apt-get install openssh-client
ssi-anik
3,0583 gold badges23 silver badges52 bronze badges
answered May 30, 2018 at 0:18
pablorskpablorsk
3,8811 gold badge32 silver badges38 bronze badges
2
You don’t have ssh installed (or don’t have it within your search path).
You can clone from github via http, too:
git clone http://github.com/organization/xxx
answered Sep 24, 2012 at 17:11
MarkMark
6,0331 gold badge19 silver badges14 bronze badges
3
Most likely your GIT_SSH_COMMAND
is referencing the incorrect public key.
Try:
export GIT_SSH_COMMAND="ssh -i /home/murphyslaw/.ssh/your-key.id_rsa
then
git clone [email protected]:organization/xxx.git
Rob♦
27k16 gold badges82 silver badges98 bronze badges
answered Jun 28, 2017 at 6:17
rivanovrivanov
1,2241 gold badge18 silver badges19 bronze badges
1
I am aware that it is an old topic, but having this problem recently, I want to bring here what I resolve my issue.
You might have this error on these conditions :
- You use a URL like this :
[email protected]:organization/repo.git
- And you run a kind of command like this directly :
git clone [email protected]/xxxxx.git
whereas you don’t have ssh client (or it is not present on path) - Or you have an ssh client installed (and
git clone xxx.git
work fine on direct command line) but when you run the same kind of command through a shell script file
Here, I assume that you don’t want to change protocol ssh git@
to http://
([email protected]:organization/repo.git
-> http://github.com/organization/repo.git
), like my case, cause I needed the ssh
format.
So,
- If you do not have ssh client, first of all, you need to install it
- If you have this error only when you execute it through a script, then you need to set
GIT_SSH_COMMAND
variable with your public ssh key, in front of your git command, like this :
GIT_SSH_COMMAND="/usr/bin/ssh -i ~/.ssh/id_rsa" git pull
(Feel free to change it depending on your context)
answered Mar 3, 2021 at 12:02
MahefaMahefa
4183 silver badges12 bronze badges
1
I had this issue right after my antivirus moved the cygwin ssh binary to virus vault, and restored it after.
Symptoms:
- SSH seems properly installed
- SSH can be run from command line without problem
Another option before reinstalling ssh in this particular case: check the ssh
command permissions
$ ls -al /usr/bin/ssh.exe
----rwxrwx+
$ chmod 770 /usr/bin/ssh.exe
answered Nov 28, 2018 at 11:43
user1556814user1556814
5736 silver badges19 bronze badges
I got the same error on the Alpine
container in the CI-CD
pipeline. I have added openssh
package and it worked.
RUN apk add --no-cache git openssh
answered Aug 21 at 16:53
hbceylanhbceylan
97810 silver badges10 bronze badges
You can try these as well
ssh-add ~/.ssh/identity_file
chmod 400 ~/.ssh/identity_file
answered Nov 3, 2021 at 8:36
It so happened in my case that the new pair of ssh keys linked with my git account were not accessible.
I had to sudo chmod 777 ~/.ssh/id_rsa.*
to resolve the issue.
answered Mar 23, 2022 at 12:26
Dota2Dota2
4564 silver badges16 bronze badges
I use Windows10 and I need to use a jumphost to get to my Linux servers. Thus I have configured my .ssh\config
like so:
Host jumphost
HostName jumphost.server.local
Host server*.server.local
ProxyCommand ssh jumphost netcat -w 120 %h %p
But when I run ssh server01.server.local -v
(dash-v for verbose) I get the following error:
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\admin/.ssh/config
debug1: C:\\Users\\admin/ssh/config line 70: Applying options for server*.server.local
debug1: Executing proxy command: exec ssh jumphost netcat -w 120 server01.server.local 22
CreateProcessW failed error:2
posix_spawn: No such file or directory
asked Mar 4, 2019 at 9:33
TL;DR
The ProxyCommand
should invoke ssh with .exe
extension, for example:
ProxyCommand ssh.exe -q -W %h:%p yyy
The long(?) story
Running ssh -vvv XXX
shows:
debug3: spawning "C:\\Windows\\System32\\OpenSSH\\ssh -q -W XXX:22 YYY"
CreateProcessW failed error:2
posix_spawn: No such file or directory
According to CreateProcess
document on MSDN, I guess posix_spawn
is calling CreateProcess
in a way that lpApplicationName
argument must be exact and absolute path. After specifying the .exe
suffix, it seems to be fixed.
answered Oct 16, 2019 at 13:44
BenBen
4314 silver badges6 bronze badges
1
I got same error but it was because of DISPLAY environment variable set to some value. Once you unset that environment variable, the error went away.
answered Oct 30, 2019 at 14:55
This issue has to do with a bug in the OpenSSH Windows implementaiton. This bug is fixed with release 8.1.0.0. Detailed instructions on how to patch the version can be found here
answered May 7, 2020 at 11:09
Since netcat is not available on a default system, the following two entries in the .ssh/config will do the trick (assuming that the local username and the remote username are distinct).
login.bar
: system to login
jump.bar
: jumphost
<username>
: remote user name on login.bar and jump.bar (if they are distinct <jumpuser>@jump.bar is needed). If you omit <username>@ in front of jump.bar the local username is taken.
a)
Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -X -W %h:%p <username>@jump.bar
b)
Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -Y <username>@jump.bar -W %h:%p
In both cases login to login.bar with: ssh foo
answered Nov 5, 2019 at 16:07
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
In the course of trying to accomplish a more complicated task (involving hardware security keys and GPG keys for SSH authentication), I have run into an ornery ssh-add
utility on my Windows 10 machine. Quite simply, my ssh-add
fails to connect to the agent, while all other ssh functions work fine.
When I run ssh-add -L
on Powershell 7.0.3, I get the following output:
Error connecting to agent: No such file or directory
However, my ssh-agent
service seems to be running just fine:
C:\Users\[me]> get-service ssh-agent
Status Name DisplayName
------ ---- -----------
Running ssh-agent OpenSSH Authentication Agent
C:\Users\[me]> get-service ssh-agent | select *
UserName : LocalSystem
Description : Agent to hold private keys used for public key authentication.
DelayedAutoStart : False
BinaryPathName : C:\WINDOWS\System32\OpenSSH\ssh-agent.exe
StartupType : Automatic
Name : ssh-agent
RequiredServices : {}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
DisplayName : OpenSSH Authentication Agent
DependentServices : {}
MachineName : .
ServiceName : ssh-agent
ServicesDependedOn : {}
StartType : Automatic
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess
Site :
Container :
C:\Users\[me]> get-command ssh-add
CommandType Name Version Source
----------- ---- ------- ------
Application ssh-add.exe 7.7.2.1 C:\WINDOWS\System32\OpenSSH\ssh-add.exe
Furthermore, I have my standard public/private SSH keypair in the default location (C:\Users\[me]\.ssh\id_rsa
, C:\Users\[me]\.ssh\id_rsa.pub
). I’ve used this key extensively on GitHub, and ssh
itself still works fine in Powershell:
C:\Users\[me]> ssh -T [email protected]
Enter passphrase for key 'C:\Users\[me]/.ssh/id_rsa':
Hi [me]! You've successfully authenticated, but GitHub does not provide shell access.
So, given every other aspect of OpenSSH seems to be working fine, why would ssh-add
be misbehaving?
Things I have tried to repair it:
- Removing other SSH utilities from my PATH (e.g. those added by Git installation).
- Disabling/re-enabling the Windows optional feature «SSH Client» (and its «SSH Server» counterpart, which I don’t think I need).
- Installing a more recent version of OpenSSH via Chocolatey (https://chocolatey.org/packages/openssh), and pointing all commands to that installation via PATH modification.
- Backing up and removing my
.ssh
folder, generating a new key (viassh-keygen
), and starting from scratch. - Changing the startup type of the
ssh-agent
service between automatic, manual, and disabled
None of the aforementioned activities seemed to have any effect whatsoever. All other ssh
tools worked fine (assuming the optional feature was enabled, and service was running), but ssh-add
did not.
What other recommendations do others have for diagnosing this ornery utility?
This error occurs when a user tries to connect to a remote server using SSH and the connection fails due to the absence of a key in the SSH agent. The SSH agent is a background process that holds private keys used for public key authentication, and it helps the user to securely manage the private keys on their local machine. When the SSH agent does not find the key it needs, it throws the error «Error connecting to agent: no such file or directory».
Method 1: Start the SSH Agent
To fix the «Error connecting to agent: no such file or directory» when adding a key to SSH agent, you can start the SSH agent with the following steps:
- Open your terminal and enter the following command to start the SSH agent:
- Add your SSH key to the agent using the following command:
ssh-add /path/to/your/private/key
- If you have multiple keys, you can add them all at once using the following command:
ssh-add ~/.ssh/id_rsa ~/.ssh/another_key
- To check if your keys are added to the agent, enter the following command:
This should display a list of all the keys that are currently added to the agent.
- Finally, try connecting to your SSH server again using the following command:
If everything is set up correctly, you should be able to connect to your SSH server without any issues.
Note: Make sure to replace «/path/to/your/private/key» with the actual path to your private key and «user@hostname» with the username and hostname of your SSH server.
That’s it! By following these steps, you should be able to start the SSH agent and add your SSH keys without encountering the «Error connecting to agent: no such file or directory» message.
Method 2: Add the Key to the SSH Agent
To add the key to the SSH agent, you can follow these steps:
- Check if the SSH agent is running by using the command
eval "$(ssh-agent -s)"
. If the agent is running, you will see output likeAgent pid 1234
. - If the agent is not running, start it using the command
ssh-agent
. - Add your SSH private key to the agent using the command
ssh-add ~/.ssh/id_rsa
. Replace~/.ssh/id_rsa
with the path to your private key file. - Verify that the key has been added to the agent by running the command
ssh-add -l
.
Here is an example of these commands in action:
$ eval "$(ssh-agent -s)"
Agent pid 1234
$ ssh-add ~/.ssh/id_rsa
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
$ ssh-add -l
2048 SHA256:1234567890abcdef1234567890abcdef1234567890 user@host (RSA)
In the example above, the SSH agent was started and the private key ~/.ssh/id_rsa
was added to the agent. The ssh-add -l
command was then used to verify that the key had been added successfully.
Note that if you are using a different private key file, you will need to replace ~/.ssh/id_rsa
with the path to your own private key file.
Method 3: Set the SSH Agent as an Environment Variable
To set the SSH Agent as an Environment Variable and fix the «Error connecting to agent: no such file or directory» issue, follow these steps:
- Check if SSH Agent is running on your machine:
- If the SSH Agent is not running, start it by running the following command:
- Add your SSH key to the agent:
ssh-add /path/to/your/ssh/key
- Set the SSH Agent as an environment variable:
export SSH_AUTH_SOCK=$(echo $SSH_AUTH_SOCK | sed 's/\/run\/user\/[0-9]*\///;s/\/ssh-.*/\/ssh_auth_sock/')
- Verify that the SSH Agent is now set as an environment variable:
That’s it! Now you should be able to add your SSH key to the agent without encountering the «Error connecting to agent: no such file or directory» issue.
Note: If you want to make this change permanent, you can add the «export SSH_AUTH_SOCK=…» command to your shell’s configuration file (e.g. ~/.bashrc or ~/.zshrc).
Method 4: Check the Permissions of the SSH Agent Socket
One of the reasons for the error «Error connecting to agent: no such file or directory» is due to the incorrect permissions of the SSH agent socket. To fix this issue, you need to check the permissions of the SSH agent socket and ensure that it is accessible by your user.
Step 1: Locate the SSH Agent Socket
The SSH Agent Socket is usually located in the /run/user/USER_ID/
directory, where USER_ID
is the ID of the current user. You can locate the SSH Agent Socket by running the following command:
This will output the path of the SSH Agent Socket.
Step 2: Check the Permissions of the SSH Agent Socket
Once you have located the SSH Agent Socket, you need to check its permissions. You can do this by running the following command:
This will output the permissions of the SSH Agent Socket.
Step 3: Fix the Permissions of the SSH Agent Socket
If the permissions of the SSH Agent Socket are incorrect, you need to fix them. You can do this by running the following command:
This will set the correct permissions for the SSH Agent Socket.
Step 4: Add the Key to the SSH Agent
Once you have fixed the permissions of the SSH Agent Socket, you can add the key to the SSH Agent by running the following command:
ssh-add /path/to/private/key
This will add the key to the SSH Agent and you should now be able to connect to the remote server without any issues.