scp'ing usando el archivo de clave como parámetro, ¿cómo puedo hacer eso si es posible?

51
scp -i ~/.ssh/id_rsa.pub events*$date*_QA.log $remote_user@$remote_server:$remote_location

¿Es incorrecto el script mencionado anteriormente? ¿No lo estoy haciendo correctamente?

Fui al .sshdirectorio y vi que el servidor remoto está en el known_hostsarchivo.

Pero, cuando hago scp ordinario sin ningún archivo como parámetro, todavía está pidiendo contraseña

scp events*$date*_QA.log $remote_user@$remote_server:$remote_location

¿Cómo puedo incluir el archivo de clave en mi comando?

sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj
Machavity
fuente

Respuestas:

67
 -i identity_file
         Selects the file from which the identity (private key) for public
         key authentication is read.  This option is directly passed to
         ssh(1).

Uso ~/.ssh/id_rsa.

Whitequark
fuente
sigue pidiendo contraseñash-3.2$ scp -i ~/.ssh/id_rsa test_QA.log user@server:location user@server's password:
@tech_learner extraño, ya que eso funciona para mí
whitequark
2
Puede que tenga que usar una ruta real, como en / home / user / en lugar de ~. Eso pareció haberlo hecho funcionar para mí.
Evan Darwin
1
Desea que el contenido ~ / .ssh / id_rsa.pub del usuario local se coloque en el archivo autorizado de claves del servidor remoto. Suele estar en ~ / .ssh / Authorizedkeke. También debe ser muy particular acerca de los permisos de archivo en archivos en ~ / .ssh, para que sean mínimamente accesibles. sshd es muy particular sobre los permisos de archivo.
JR Lawhorne
En Mac OS X solo funcionaba si -i ~/.ssh/id_rsaera la primera opción. Así que esto funcionó: scp -i ~/.ssh/mykey.pem -r dir user@remote_server:~/. Esto no funcionó:scp -r -i ~/.ssh/mykey.pem dir user@remote_server:~/
asmaier
1

Esto podría ayudar a otro novato.

[Sé que este es un ejemplo circular redundante pero es bueno ilustrarlo] Escenario:

  1. ssh desde Mac -> Ubuntu
  2. archivos scp de Mac -> Ubuntu
  3. cerrar archivos ssh y scp de Ubuntu -> Mac

Solo había creado claves ssh en mi Mac (a través de ssh-keygen) y las compartí con la máquina que ejecuta Ubuntu a través de (ssh-copy-id). Entonces podría copiar archivos, mientras estaba conectado a mi Mac desde la máquina que ejecuta Ubuntu, pero no al revés.

Solución: tuve que crear claves ssh en la máquina Ubuntu y compartirlas con mi Mac. entonces podría ejecutar con éxito el siguiente comando en la máquina Ubuntu

Mac IP: 192.168.1.40
Ubuntu IP: 192.168.1.38

En Mac

ssh-keygen
ssh-copy-id [email protected]

ssh [email protected]

# Now on Ubuntu
ssh-keygen
ssh-copy-id [email protected]

Y ahora el siguiente comando debería copiar el archivo sin pedir contraseña a MAC

sudo scp -i /home/ubuntu/.ssh/id_rsa [email protected]:~/Documents/Fluff/Version-Control/tools/pull.sh .
Patrick Walter
fuente
0

Probado y corregido a través de estas instrucciones: https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

Las instrucciones aquí funcionaron perfectamente cuando probé en mis cajas (CentOS / CentOS). Me imagino que el problema es que sus claves ssh no están vinculadas a un nombre de usuario.

Ejemplo: authorized_keys gato # en la caja estoy sshing / scpin' a ssh-rsa BLAHBLAHBLAHBLAH / zAcS4kD9pyPAjD3 / gd5D1rcQa6IztCMR9yMXiGFnxviWsT8 / oYevZw25k4yREuA8ibLKC9peH1X4LK1E + n7gq4TETexWkZbQ2XGLOX44eglra3MB4FShPg0cZXGcJWltPQ / y0Ay2A / KmaC14YrDfqwm7 + ibTiUp4hOO8I6eIPmwwGn / 2hs0SewJXisGqUx2v #username [email protected] está ligada a la llave y es una anfitrión autorizado

Max Humphrey
fuente