ssh-copy-id es un script bastante simple que debería ser bastante fácil de replicar en Windows.
Si ignora todo el manejo de parámetros, manejo de errores, etc., estos son los dos comandos de ssh-copy-id que realmente están haciendo el trabajo la mayor parte 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
Usando las herramientas de masilla, un comando como este debería ser equivalente (no probado).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Si desea hacer el mismo manejo de errores y la ubicación automática de la clave, estoy seguro de que escribir un script en Windows será mucho más complicado, pero ciertamente posible.
plink.exe -pw password
trabajos. Además, si sabe que existe .ssh / Authorizedkeys, el comando es simplementetype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
directorio existe. La>>
redirección creará el archivo si no existe.Estas respuestas no me ayudaron. Realmente no necesitaba ningún guión loco. Había creado una clave pública en mi máquina cliente en git bash e intentaba copiarla en un VPS.
Después de crear su clave pública, la clave debe almacenarse como "(cualquier carpeta en la que haya comenzado) /. Ssh / id_rsa.pub"
Entonces use este comando: ¿
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"
dóndeuser
está su nombre de usuario (a veces "root", o lo que sea que haya configurado) y reemplácelo123.45.67.89
con la dirección IP de su máquina / host / VPS.Si el directorio
.ssh
aún no se ha creado en la máquina host, use esta pequeña variación:cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
fuente
ssh-copy-id hace un par de cosas (lea la página del manual para más detalles), pero lo más importante que hace es agregar el contenido de su archivo de clave pública local a un archivo remoto llamado Authorizedkeys.
Puede hacerlo usted mismo abriendo el archivo de clave con un editor de texto y pegando el contenido en el terminal Kitty.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
Alternativamente, puede cargar el archivo usando WinSCP (que usa sftp o scp como respaldo) y hacer algo similar a mi sugerencia anterior, sin la copia / pegado feo.
cat id_rsa.pub >> .ssh/authorized_keys
donde id_rsa.pub es el nombre de archivo de la clave pública que cargó.
fuente
Inspirado por la respuesta de zoredache, he creado un montón de scripts que son la versión de Windows. Sin embargo, todos dependen del plink. Por favor mira aquí
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
También tengo un script winscp que se puede usar según otra respuesta. :) Extracto del archivo Léame:
Métodos intentados hasta ahora:
usage: .\Scriptname [email protected] password [identity file]
usage: .\Scriptname /i:idtest.pub [email protected] /p:password
usage: .\Scriptname -i idtest.pub [email protected] password
# "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
fuente
En Windows 7 hay un ssh.exe
Esto es lo que funcionó para mí:
1. crear identidad (en windows)
Eso creó un archivo de identidad en el directorio de inicio. Cambié el nombre de la clave pública a "id_rsa"
2. copie el archivo al sistema linux de destino usando los Créditos ssh a https://serverfault.com/users/984/zoredache para obtener su respuesta
Nota: Por alguna razón, la tubería no funcionó para mí:
3. Corrija el archivo en Linux El archivo id_rsa.pub en Windows es multilínea, donde Linux lo espera en una sola línea, por lo que debemos corregirlo un poco. Inicie sesión en Linux y abra el archivo:
Por ejemplo:
debe convertirse
4. pruébalo
Esto debería enumerar el contenido de / tmp sin pedir la contraseña.
fuente
authorized_keys
a líneas simples es todo lo que necesitaba!Si no tiene
ssh-copy-id
en Windows, puede ejecutarlo en el servidor mismo..pub
extensión..pub
archivo al servidor.En el servidor escriba:
En Windows, el
ssh-copy-id
script viene con Git para Windows . Entonces puede usar eso localmente, si tiene Git para Windows.Si no desea hacer esto manualmente, puede usar WinSCP 5.15. Puede configurar la autenticación de clave pública por usted.
Use Herramientas> Instalar clave pública en el botón Servidor en SSH> Página de autenticación del cuadro de diálogo Configuración avanzada del sitio WinSCP .
(Soy el autor de WinSCP)
fuente
Si está utilizando cmder (o msysgit / mingw que tiene scp & ssh), acabo de escribir un script simple de Python para esto. Se puede encontrar aquí: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Ejemplo de uso: python ssh-copy-id.py user @ remote-machine.
Se le solicitará una contraseña al ejecutar el script.
fuente
lo que hice, tener CygWin en mi Win10, conectarme a Linux (basado en la respuesta anterior):
- nota: usando cat, resolvería la ruta cygwin automáticamente, así como cualquier comando cygwin usando la estructura cygwin-linux-folder-structure
fuente
Los siguientes pasos harían:
PASO-1: Generar par de claves RSA
STE2-2: ssh-copy-id equivalente en windows
PASO 3: ¡La autenticación sin contraseña funciona!
fuente
Hay una versión para Windows de ssh-copy-id que encontré en GitHub: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
fuente
Versión Powershell para SSH incluida en Git para Windows
De hecho, puede funcionar siempre que lo tenga
ssh
en su camino. Agregue lo siguiente en su perfil de PowerShell:En una consola powershell:
fuente