Cómo usar el comando openssh sftp con una clave RSA / DSA especificada desde la línea de comando

35

El comando Openssh ssh y scp proporcionó una -iopción de línea de comando para especificar la ruta a la clave RSA / DSA que se utilizará para la autenticación.

Mirando las páginas de manual de sftp no pude encontrar una manera de especificar la clave RSA / DSA.

Estoy buscando una manera de iniciar una sesión sftp que use una clave RSA / DSA especificada, y no las teclas ~ / .ssh / id_ {dsa, rsa}.

Intenté el cliente OpenSSH sftp en Linux ... pero debería tener las mismas opciones en otras plataformas.

Adi Roiban
fuente
2
Especifique qué cliente sftp está utilizando en qué plataforma.
dmourati

Respuestas:

41

Una opción potencial es usar sftp -oIdentityFile=/path/to/private/keyfile. Necesita más información para decir si eso funcionará para usted. Parece funcionar bajo Mac / Linux.

dmourati
fuente
11

Simplemente puede usar el -iargumento para su comando sftp o ssh.

sftp -i /path/to/private/keyfile ...

Si la opción -i no está disponible, puede usar la opción -o con una sintaxis como:

sftp -oIdentityFile=/path/to/private/keyfile ...
slubman
fuente
44
sftp no tiene una opción -i, que es probablemente la razón por la cual el OP hace la pregunta.
user9517 es compatible con GoFundMonica
funciona en mis hosts Linux pero no en mi computadora portátil Mac, donde la opción -i no parece existir.
dmourati
Mis hosts Ubuntu y CentOS no tienen un conmutador -i para sftp
user9517 es compatible con GoFundMonica
Mi cliente CentOS hace: [dmourati @ flexo ~] $ cat / etc / redhat-release CentOS versión 5.6 (Final) [dmourati @ flexo ~] $ que ssh / usr / bin / ssh [dmourati @ flexo ~] $ que sftp / usr / bin / sftp [dmourati @ flexo ~] $ rpm -qf / usr / bin / sftp openssh-clients-4.3p2-72.el5 [dmourati @ flexo ~] $ man sftp [dmourati @ flexo ~] $ man sftp | cabezal SFTP (1) Manual de comandos generales de BSD SFTP (1) NOMBRE sftp - programa de transferencia segura de archivos SINOPSIS sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config ] [-i
archivo_de_identidad
1
@dmourati: Y el mío no [iain @ centos ~] $ que ssh / usr / bin / ssh [iain @ centos ~] $ que sftp / usr / bin / sftp [iain @ centos ~] $ rpm -qf / usr / bin / sftp openssh-clients-4.3p2-72.el5_6.3 [iain @ centos ~] $ man sftp | head SFTP (1) Manual de comandos generales BSD SFTP (1) NOMBRE sftp - programa de transferencia segura de archivos SINOPSIS sftp [- 1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S programa] [-s subsistema | sftp_server] host sftp [[usuario @] host [: archivo [archivo]]]
user9517 es compatible con GoFundMonica
8

Puede crear un archivo de configuración alternativo para la conexión y usar el -Finterruptor para indicarle a ssh que lo use. crear un archivo de configuración, por ejemplo, ~ / .ssh / config.sftp con el contenido

Host remote.host.tld
User RemoteUserName
IdentityFile /path/to/atlernate/identityfile

entonces llama a sftp así

sftp -F ~/.ssh/config.sftp remote.host.tld
Connecting to remote.host.tld...
Enter passphrase for key '/path/to/atlernate/identityfile':
sftp>

La configuración anterior restringe el uso de la clave alternativa (cuando se usa este archivo de configuración) al usuario RemoteUserName en remote.host.tld.

Eche un vistazo a la página de manual para ssh_confg para el uso del archivo de configuración alternativo

Iain
fuente
¡Muchas gracias por su ayuda! Su solución proporciona una alternativa limpia a los argumentos de la línea de comandos. Por ahora, prefiero pasar todos los argumentos a través de la línea de comandos, ya que estoy usando -oPort = ALT_PORT.
Adi Roiban