I am trying to get my ssh public key from my windows client to ubuntu host, but I have no idea how to. I tried to find the authorized_keys file, but had zero success. ssh-copy-id command did not work from windows. I generated the public/private key pair in PuTTYgen. I am using OpenSSH on the Ubuntu host. Any ideas on what to do?
5 Answers
Any ideas on what to do?
1. EDIT Download cmder or use your favorite console emulator. Move your public key (id_rsa.pub) and your private key (id_rsa) to C:\Users\yourUserName\.ssh\
create the .ssh folder if needed.
2. On your windows host via cmder:
cp C:\Users\yourUserName\.ssh\id_rsa.pub C:\Users\yourUserName\authorized_keys
3. On your ubuntu host:
service ssh status
Start sshd if necessary
mkdir ~/.ssh/
(if it doesn't already exist)
4. On your Windows host via cmder:
cd C:\Users\yourUserName\
scp authorized_keys login-id@ubuntu-Host-Ip:~/.ssh
5. On your Ubuntu host:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
6. On your Windows host via cmder:
Test if you can ssh into your ubuntu host without login/pw auth. If yes:
rm C:\Users\yourUserName\authorized_keys
(you might encounter difficulties running your ssh-agent on windows, write a comment if so)
- 1,643
- 10
- 20
-
Are you sure that PuTTYgen has generated a C:\Users\yourUserName\.ssh\id_rsa.pub? – Serge Ballesta Aug 22 '17 at 08:17
Do this on your Windows
Give default values without passphrase, just press enter for all
ssh-keygen -t rsa
If the authorized_keys file is not there in target Linux machine else just copy the Windows ~/.ssh/id_rsa.pub content to authorized_keys file in target machine
scp ~/.ssh/id_rsa.pub [linux_user]@[linux_IP/linux_hostname]:~/.ssh/authorized_keys
That's it!!!
- 29
- 3
-
Works perfectly, but careful since this will overwrite the existing "authorized_key"-file. If you want to use multiple keys you can just create multiple files named "authorized_key2", "authorized_key3" etc. – Lew Pérez Mar 29 '19 at 15:46
ssh-copy-id is missing from windows but it easy to create one!
- open powershell and type:
notepad $profile
- You’ll either open the existing Profile.ps1 file, or be prompted to create a new one. At the notepad paste the following function:
function ssh-copy-id([string]$sshHost)
{
cat ~/.ssh/id_rsa.pub | ssh "$sshHost" "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
}
Close the notepad and save.
Finally open a new powershell window and the ssh-copy-id will works as at linux. Example:
ssh-copy-id user@host
- 121
- 3
Assuming your ssh agent is running, just run this from Ubuntu.
ssh-add -L >> ~/.ssh/authorized_keys
- 171
- 7
Another way to send your public key from your Windows to your Linux machine is command in your powershell:
cat ~/.ssh/id_rsa.pub | ssh user@host "cat >> ~/.ssh/authorized_keys"
That should be a one-stop shop for it to work to make it a passwordless entry.
- 123,438
- 55
- 284
- 319
- 9
- 1