Menggunakan SCP atau SFTP dengan file konfigurasi ssh saya?

44

Mungkin google-foo saya gagal di sini ... Saya ingin menghubungkan dan mengunggah file dump mysql melalui terminal menggunakan SFTP atau SCP ke server jarak jauh saya menggunakan file konfigurasi ssh saya. Menurut dokumentasi yang saya temukan, saya seharusnya dapat melakukan ini:

sftp -F db.sql.gz [email protected] /tmp

Saya juga sudah lelah alias di konfigurasi saya:

sftp -F db.sql.gz myalias /tmp

Ketika saya melakukan dua di atas, saya hanya mendapatkan cetakan dari perintah yang mungkin, -Fmenjadi salah satunya.

Saya sudah dapat terhubung melalui ssh menggunakan pintasan di konfigurasi lokal saya, jadi saya tahu itu berfungsi:

ssh myalias

** Catatan: Saya terhubung menggunakan pasangan kunci privat / publik sehingga saya tidak perlu memasukkan kata sandi. Pasangan kunci memang memiliki frasa sandi yang terkait dengannya tetapi OS X Keychain ingat bahwa pertama kali saya terhubung.

... jadi saya tidak yakin apa yang saya lakukan salah.

Danny Englander
sumber

Jawaban:

46
  1. Dari teks bantuan: " ... [-F ssh_config] ..."

    Menurut yang di atas, -Fmengharapkan satu argumen: path ke file konfigurasi OpenSSH, ~/.ssh/configatau serupa. Tapi Anda memberikannya dump SQL gzipped.

    Karena plain ssh myaliassudah berfungsi, Anda bahkan tidak memerlukan -Fopsi di sini. Hanya sftp myaliasakan terhubung ke server.

  2. Namun, sftpklien OpenSSH tidak mendukung mengunggah file seperti yang Anda coba; itu hanya dapat mengunduh file (menggunakan sintaks host:path) atau bekerja dalam mode interaktif. Untuk mengunggah, Anda harus menggunakan mode interaktif ...

    $ sftp myalias
    sftp> cd /tmp
    sftp> put db.sql.gz
    

    ... atau scpalat:

    scp db.sql.gz myalias:/tmp
    

    atau

    scp db.sql.gz [email protected]:/tmp
    

(sftp memang memiliki mode batch di mana ia dapat membaca perintah dari file, menggunakan -b, tetapi lebih mudah digunakan scpuntuk unggahan tunggal.)

Ada klien SFTP lain juga - lftp baik untuk penggunaan interaktif, sementara curl dapat lebih mudah untuk diotomatisasi. Untuk cadangan dan semacamnya, Anda juga bisa menggunakan rsync (yang menjalankan protokolnya sendiri tetapi masih di dalam SSH).

grawity
sumber
wow ini sempurna, bekerja hebat! Saya baru saja mengenal terminal sehingga ini akan sangat berguna di masa depan.
Danny Englander
0

Masalah yang disebabkan oleh konfigurasi ForwardAgent seperti di bawah ini,

Host dockervm
   HostName x.x.x.x
   User root
   Preferredauthentications publickey
   ForwardAgent yes

Kasus saya, itu karena 'ForwardAgent' pada ssh config yang menyebabkan scp hang. Setelah berkomentar, berhasil untuk saya.

Juga, Anda dapat memiliki salinan file dengan garis ForwardAgent berkomentar dan menggunakan scp -F untuk membuatnya bekerja.

MohanBabu
sumber