Come utilizzo il mio file di chiavi per trasferire sftp i dati da un server a un altro


25

Non posso scp, l'altro server accetta solo connessioni sftp.

Attualmente sto provando a farlo

sftp jay@server.name.com:/files> put -r ~/

-i keynamenon funziona, si risolve solo con illegal option -- i.

Risposte:


34

Provare:

sftp -o "IdentityFile=keyname" jay@server.name.com

Puoi usare -oper passare qualsiasi opzione valida in ~/.ssh/config.


Azzeccato. Grazie! come lo tengo lì normalmente?
Jay,

Non so cosa intendi per "tenerlo lì normalmente". Se vuoi dire che vuoi che l' IdentityFileopzione sia sempre data automaticamente, controlla la risposta di UtahJarhead sull'inserimento~/.ssh/config
Celada,

4

Copia la tua chiave PUBLIC sul server usando i mezzi tradizionali.

Sul server:

  • Crea .sshse non esiste:
[[! -d "$ {HOME} /. ssh"]] && mkdir -p "$ {HOME} /. ssh"
  • Implementare la chiave pubblica:
cat /path/to/public_key.pub >> "$ {HOME} /. ssh / authorized_keys"
  • Imposta le autorizzazioni appropriate. OpenSSH è MOLTO ANALE riguardo alle autorizzazioni dei file in questione:
chmod go-rwx "$ {HOME}" "$ {HOME} /. ssh / authorized_keys"

Successivamente, dovresti essere in grado di accedere dal client utilizzando la chiave PRIVATA. Per automatizzare un trasferimento, si desidera utilizzare un file batch, che è solo un file di testo contenente un elenco di comandi da eseguire.

echo "put nomefile.foo /safe/path/nomefile.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile = / path / to / private_key user @ host

In alternativa, sentiti libero di creare un file ~ / .ssh / config in formato ssh_config in modo da poterlo digitare in futuro:

sftp -b /tmp/batchfile.txt host

Contenuti di esempio di ~/.ssh/config

Ospita il nome_host
    Utente nome_utente
    IdentityFile / path / to / private_key

Provo questo nel prossimo batch, ma la soluzione sopra ha fatto il trucco.
Jay,

1

Se stai cercando di installare sftp su ec2, questo articolo potrebbe essere d'aiuto


Mi dispiace, davvero.
Jay,

1
Questa "risposta" non ha nulla per contribuire alla domanda. Peggio ancora, è solo un link a una pagina che un giorno scomparirà.
John Mayor,

0

Di recente ho riscontrato questo problema e ciò che ha funzionato per me nella configurazione del terminale predefinito del mio macbook è il seguente

sftp -i ./privateFilePath.key username@url.com

Nota che potresti essere promosso con FILE CHIAVE PRIVATO NON PROTETTO! messaggio nel qual caso è necessario eseguire questo comando per assicurarsi che la chiave privata non sia accessibile da altri.

chmod 600 privateFilePath.key 

In alcuni casi è necessario mettere sudo davanti al comando, questo è solo se si lavora in una directory protetta dall'amministratore

Vorrei che fosse utile :)


Perché ti aspetti che ciò sia utile quando la domanda diceva che l' -iopzione non funziona?
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.