56 votos

¿Existe un equivalente a ssh-copy-id para Windows?

¿Existe algún puerto de ssh-copy-id o equivalente para Windows? ¿Es decir, hay una manera fácil de transferir llaves SSH desde una máquina local a un servidor remoto bajo Windows?

En caso de ayuda, estoy usando desfile y Kitty (una alternativa masilla) ya.

27voto

Zoredache Puntos 84524

ssh-copy-id es bastante simple script que debería ser bastante fácil de replicar en windows.

Si usted caso omiso de todos los parámetros de manejo, manejo de errores, y así sucesivamente, estos son los dos comandos desde ssh-copy-id que están haciendo el trabajo la mayoría del tiempo.

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

Con la espátula de herramientas de un comando como este debe ser equivalente (no probado).

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

Si usted quiere hacer todo el mismo error de manipulación, y el automático de la ubicación de la clave, estoy seguro de que escribir una secuencia de comandos en Windows va a ser mucho más complicado, pero ciertamente posible.

20voto

Augie Gardner Puntos 141

Estas respuestas no me ayudan. Realmente no necesita ninguna locura secuencias de comandos. Yo había creado un público clave en mi equipo cliente de git bash y estaba tratando de copiar a un VPS.

Después de crear su clave pública, la clave debe ser almacenado como "(cualquiera que sea la carpeta que se inició en)/.ssh/id_rsa.pub"

Para utilizar este comando:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys" donde user es tu nombre de usuario (a veces, "root", o lo que sea puede que haya configurado), y reemplazar 123.45.67.89 con su máquina / host / VPS dirección IP.

Si el directorio .ssh aún no se ha creado en la máquina host, utilice esta pequeña variación:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

16voto

Kenny Rasschaert Puntos 5933

ssh-copy-id hace un par de cosas (lea la página man para más detalles), pero la cosa más importante que lo que hace es añadir el contenido de su archivo de clave pública a un archivo remoto llamado authorized_keys.

  • Usted puede hacer esto mediante la apertura de la llave de archivo con un editor de texto y pegar el contenido en la Kitty terminal.
    echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys

  • Alternativamente, usted puede cargar el archivo usando WinSCP (que utiliza sftp o scp como una reserva) y hacer algo similar para mi sugerencia anterior, sin el feo copiar/pegar.
    cat id_rsa.pub >> .ssh/authorized_keys
    donde id_rsa.el pub es el nombre de archivo de la clave pública que haya subido.

5voto

Vijay Puntos 182

Inspirado por zoredache la respuesta, he creado un montón de secuencias de comandos que son la versión de windows. Sin embargo, todos ellos dependen de plink. Por favor, echa un vistazo aquí

https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/

También tengo un winscp secuencia de comandos que pueden ser utilizados como por otra respuesta. :) Extracto de el readme:

Intento de los métodos hasta ahora:

  • DOS(.cmd) - Éxito
    • usage: .\Scriptname test@example.com password [identity file]
  • VBS (.vbs) - Éxito
    • usage: .\Scriptname /i:idtest.pub user@example.com /p:password
  • Powershell(.ps1) - Éxito
    • usage: .\Scriptname -i idtest.pub user@example.com password
  • mremoteNG (ext app) - Éxito
    • Seleccione Host, haga clic en, herramientas externas, seleccione Scriptname
  • WinSCP secuencia de comandos (.bat) - Éxito
    • # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"

0voto

ceilfors Puntos 111

Si usted está usando cmder (o msysgit/mingw que tiene scp & ssh), escribí un simple script python para esto. Se puede encontrar aquí: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983

Uso de la muestra: python ssh-copy-id.py user@remote-machine.

Pedirá la contraseña al ejecutar el script.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: