Cara menggunakan perintah openssh sftp dengan kunci RSA / DSA yang ditentukan dari baris perintah

35

Perintah openssh ssh dan scp menyediakan -iopsi baris perintah untuk menentukan jalur ke kunci RSA / DSA yang akan digunakan untuk otentikasi.

Melihat halaman manual sftp saya tidak dapat menemukan cara untuk menentukan kunci RSA / DSA.

Saya mencari cara untuk memulai sesi sftp yang akan menggunakan kunci RSA / DSA yang ditentukan, dan bukan kunci ~ / .ssh / id_ {dsa, rsa}.

Saya mencoba OpenSSH sftp client di Linux ... tetapi seharusnya memiliki opsi yang sama pada platform lain.

Adi Roiban
sumber
2
Silakan tentukan klien sftp mana yang Anda gunakan pada platform mana.
dmourati

Jawaban:

41

Salah satu opsi potensial adalah menggunakan sftp -oIdentityFile=/path/to/private/keyfile. Perlu info lebih lanjut untuk mengatakan apakah itu akan berhasil untuk Anda. Tampaknya bekerja di bawah Mac / Linux.

dmourati
sumber
11

Anda cukup menggunakan -iargumen untuk perintah sftp atau ssh Anda.

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

Jika opsi -i tidak tersedia, Anda bisa menggunakan opsi -i dengan sintaksis seperti:

sftp -oIdentityFile=/path/to/private/keyfile ...
Slubman
sumber
4
sftp tidak memiliki opsi -i yang mungkin mengapa OP mengajukan pertanyaan.
user9517 mendukung GoFundMonica
bekerja di bawah host Linux saya tetapi bukan laptop Mac saya di mana opsi -i sepertinya tidak ada.
dmourati
Host Ubuntu dan CentOS saya tidak memiliki -i untuk sftp
user9517 mendukung GoFundMonica
Klien CentOS saya melakukan: [dmourati @ flexo ~] $ cat / etc / redhat-release rilis CentOS 5.6 (Final) [dmourati @ flexo ~] $ yang ssh / usr / bin / ssh [dmourati @ flexo ~] $ yang 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 | head SFTP (1) Manual Perintah Umum BSD SFTP (1) NAME sftp - program transfer file aman SYNOPSIS sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config ] [-i identity_file]
dmourati
1
@dmourati: Dan milik saya tidak [iain @ centos ~] $ yang ssh / usr / bin / ssh [iain @ centos ~] $ yang 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 Perintah Umum BSD SFTP (1) NAME sftp - program transfer file aman SYNOPSIS sftp [- 1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program] [-s subsistem | sftp_server] host sftp [[user @] host [: file [file]]]
user9517 mendukung GoFundMonica
8

Anda dapat membuat file konfigurasi alternatif untuk koneksi dan menggunakan -Fsakelar untuk memberi tahu ssh untuk menggunakannya. buat file config misal ~ / .ssh / config.sftp dengan isinya

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

lalu panggil sftp seperti itu

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

Konfigurasi di atas membatasi penggunaan kunci alternatif (ketika file konfigurasi ini digunakan) untuk pengguna RemoteUserName di remote.host.tld.

Lihatlah halaman manual untuk ssh_confg untuk penggunaan file konfigurasi alternatif

Iain
sumber
Terima kasih banyak atas bantuan Anda! Solusi Anda memberikan alternatif yang bersih untuk argumen baris perintah. Untuk saat ini, saya lebih suka meneruskan semua argumen melalui baris perintah, karena saya sudah menggunakan -oPort = ALT_PORT.
Adi Roiban