I feel like I am missing some fundamental concept as to how the .ssh directory works in windows. I have had no issues when working in OSX/Linux like I am having now. My end goal is simply to move my existing ssh key into the default ~/.ssh directory, and update the config if I so choose (you know, normal ssh key related tasks).
However, any time I have tried to move my existing SSH key over to the ~/.ssh directory, or open it, or even create a config file I just get the following error (in either gitbash, puttygen, etc...):
Puttygen (saving the key to disk):
Overwrite existing file C:\Users\me\.ssh? or in gitbash (attempting to do anything, including just create the config file):
touch: creating `/c/Users/me/.ssh/config': No such file or directory cd ~/.ssh sh.exe": cd: /c/Users/me/.ssh: Not a directory What am I missing/not understanding?
Kind Regards, u353
58 Answers
This answer for Windows environment:
At the beginning, Windows didn't have .ssh folder.
When your run command for creating a ssh key like this:
ssh-keygen -t rsa -b 4096 -C "" (must run your terminal as administrator).
Your is_rsa and id_rsa.pub files will be placed under C:\Users\your_username\
So, you need to create folder C:\Users\your_username\.ssh yourself then copy the ssh files to there. You also have to create file C:\Users\your_username.ssh\config and edit it for the first time.
Next ssh will be placed under the .ssh folder automatically.
Note: ~/ is the same as C:\Users\your_username\ on Windows
I have created and regularly use a ".ssh" directory on Windows 7; as mentioned in the above comments, Windows Explorer doesn't support them, or more specifically, the error-checking in Windows Explorer does not allow you to give a file name that starts with a period. That same restriction does not exist in the command prompt or powershell.
Also, as mentioned above, it appears you have a file called ".ssh" in your home directory, which must be removed before you can create a folder named ".ssh".
Once such a folder exists, you can open it and change/create files in it using Windows Explorer; it just won't let you name a folder/file ".ssh" directly.
Gitbash should directly allow you to run "rm .ssh" and "mkdir .ssh", at which point everything else should work.
It is quite possible to add a . in the beginning of a directories name using File Explorer, it can be easily done by adding a . at the end of the directory name as well. For example:
To create a directory named .shh, just add the name as .ssh. and it will be created without any error.
And as @Bryson mentioned, this can be done from the cli as well, without appending a . at the end.
Coming to this in 2018, given that on Windows 10 you have the Optional Feature OpenSSH client installed it appears that on Windows a .ssh folder is created for you under C:\Users\<your_username>\.ssh
This is a feature that allows you to use PowerShell to SSH into remote hosts, and seems to be pretty similar in usage to the Linux/Unix equivalent. It was already installed for me when I setup my computer, but you can read the following for how to verify it's installed or install it:
You can check if it's installed by going to Settings -> Manage Optional Features, and then checking if you see OpenSSH in the list. If it is then your .ssh folder is probably in your home directory C:\Users\<your_username>\.ssh. If you need to install it then click "Add a feature", locate OpenSSH Client, click it and click install to install it.
Use git bash on windows go to home directory as
$ cd
then to check .ssh folder on home directory use
$ ls -A you will be able to see a ./ssh folder there
$ cd ./ssh $ ls you will be able to see the config files if exists
To transfer any key-pair or any files to this folder use below command First to that directory in which you already have key-pair
$ cp name_of_key-pair_file.pem ~/.ssh/ 2First of all, if you want to generate SSH files, all you need to do is run this command:
ssh-keygen Once you did, .ssh folder will be generated in this path:
C:\Users\your_username\ For checking what files are in .ssh folder you can easily run this command:
ls ~/.ssh with this above command, you can see all your ssh files which would be like this:
id_rsa id-rsa.pub Please note that:
id_rsa : It's a private file and id-rsa.pub : It's a public file
so, if you like to see inside of that file or whatever you like just type this command :
cat ~/.ssh/id_rsa.pub To solve this problem I used git batsh console
This isn't supported as Windows doesn't recognize dot files as directories.
1