Tell me more ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Is there any equivalent or port of ssh-copy-id available for Windows? That is, is there an easy way to transfer SSH keys from a local machine to a remote server under Windows?

In case it helps, I'm using Pageant and Kitty (a Putty alternative) already.

share|improve this question

3 Answers

up vote 8 down vote accepted

ssh-copy-id is a pretty simple script that should be pretty easy to replicate under windows.

If you ignore all the parameter handling, error handling, and so on, these are the two commands from ssh-copy-id that are actually doing the work most of the time.

GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1

Using the putty tools a command like this should be equivalent (not tested).

type  public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

If you want to do all the same error handling, and the automatic key location, I am sure writing a script under Windows will be a lot trickier, but certainly possible.

share|improve this answer
Thanks! I couldn't get it to work at first; I was getting "access denied" errors back, but plink wasn't stopping to let me enter the password. I then tried passing plink the password using the -pw switch and that worked. Do you know if there is a way to get plink to pause for you to enter the password mid-way through? – Matt V. Jan 20 '11 at 22:45
Not really sure about password authentication and plink. Whenever I actually use it I already have my key on the system, and I have pagent running. – Zoredache Jan 20 '11 at 23:17

ssh-copy-id does a couple of things (read the man page for details), but the most important thing it does is append the contents of your local public key file to a remote file called authorized_keys.

  • You could do this yourself by opening the key file with a text editor and pasting the contents in the Kitty terminal.
    echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys

  • Alternatively, you could upload the file using WinSCP (which uses sftp, or scp as a fallback) and do something similar to my previous suggestion, without the ugly copy/pasting.
    cat id_rsa.pub >> .ssh/authorized_keys
    where id_rsa.pub is the filename of the public key you uploaded.

share|improve this answer

you dont need to alternative for ssh-copy-id because you needit in linux so just write it there and get the results.

share|improve this answer
1  
Many people administer linux machines from a windows machine. So it's reasonable to have an easy path to distribute out the auth keys from a windows machine. – nos Oct 8 '12 at 10:48

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.