Login dengan Linux FTP username dan password


23

Apa perintah untuk masuk dengan FTP semua dengan satu baris?

ftp username:password@my.domain.com

mengatakan:

Kata sandi diperlukan untuk nama pengguna: kata sandi


2
Gunakan man ftpuntuk mencari tahu, atau mungkin ftp --help. Jangan lupa itu ftpmungkin berarti utilitas yang berbeda ....
Basile Starynkevitch

2
ftp ftp://username:password@my.domain.com

1
Anda juga harus ingat bahwa baris perintah dari proses yang diberikan terlihat oleh semua pengguna lain di sistem. Karenanya, memberikan kata sandi Anda sebagai bagian dari baris perintah mungkin merupakan masalah keamanan yang serius.

Jawaban:


8
ftp -nv yourftpserver.com

saat itu user your_username atauuser anonymous


Saya memposting jawaban ini karena ftp ftp://username:password@my.domain.comtidak berhasil untuk saya.

Usage: { ftp | pftp } [-46pinegvtd] [hostname]
   -4: use IPv4 addresses only
   -6: use IPv6, nothing else
   -p: enable passive mode (default for pftp)
   -i: turn off prompting during mget
   -n: inhibit auto-login
   -e: disable readline support, if present
   -g: disable filename globbing
   -v: verbose mode
   -t: enable packet tracing [nonfunctional]
   -d: enable debugging

2
Ini tidak berguna karena membutuhkan penggunaan interaktif. Saya mungkin juga cukup mengetikkan 'ftp user @ yourserver'.
smaudet

3
ini tidak menjawab pertanyaan
phil294

7
ftp ftp://username:password@my.domain.com

Anda bisa dengan mudah menggunakannya ftp --help.


25
Perintah yang ditampilkan menghasilkan: "Nama atau layanan tidak dikenal". ftp -help tidak menghasilkan apa-apa dengan ftp :, // atau username: password @.
CW Holeman II

4
Versi Linux apa yang Anda gunakan? Saya juga mendapatkan "Nama atau layanan tidak dikenal" ketika saya mencoba sintaks di atas. Saya menggunakan CentOS 6.
Tim Ludwinski

7
Saya juga menerima Nama atau Layanan yang tidak dikenal
Kevin Johnson

6
tidak berfungsi untuk saya, fyi pada server jarak jauh ubuntu
user391339

6
Saya juga menemukan ftp -help tidak membantu dan format yang Anda sarankan tidak berfungsi untuk saya di ubuntu 16.
Henry

3

Opsi terbaik adalah menggunakan .netrc bersama dengan sesuatu seperti gpg untuk tujuan keamanan.

Saya telah menulis skrip tujuan umum untuk ini, yang dapat saya unggah nanti, tetapi intinya adalah:

gpg -c .netrc

atau secara opsional dengan frasa sandi pada commandline dan tujuan keluaran:

gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc

Tidak ditampilkan di sini, tetapi Anda juga bisa menggunakan kunci asimetris (jika Anda mengaturnya) dengan gpg untuk membuatnya lebih aman.

Lalu ketika Anda siap untuk login

gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc

Contoh .netrc:

machine google.com
login <username>
password <secretpassword>

Saya benar-benar menyimpan hash lokal dan salinan asli dari file-file ini pada komputer yang berbeda dari yang saya yang saya gunakan pada file .netrc, dan memverifikasi hash dari .netrc dan skrip yang saya jalankan, tapi itu di atas dan melampaui pertanyaan awal OP.


Ini adalah jawaban terbaik, meskipun dapat ditingkatkan: (1) kredensial pengguna dalam satu baris perintah akan disimpan dalam shell history => masalah keamanan. (2) .netrc juga berfungsi tanpa masalah keamanan gpg =>. Juga periksa apakah file .netrc memiliki izin yang benar: chmod 600 .netrc(3) fungsi shell sebagai pembungkus dekripsi, panggilan ftp, dan penghapusan .netrc yang didekripsi akan sangat membantu. Terima kasih atas jawaban Anda!
matematika

Jadi, alih-alih kata sandi FTP, pengguna harus mengetikkan frasa sandi GPG? Juga, jika penyerang memiliki akses tulis ke file pribadi Anda, ada banyak cara untuk mengungkapkan kredensial Anda segera setelah Anda menggunakannya. Dalam skenario itu, GPG hanya membantu melawan penyerang dengan akses hanya baca. Yang benar-benar langka, kurasa?
Konrad

1

Gunakan netrc . Ini lebih baik daripada memberikan kata sandi pada baris perintah.


Jawaban ini tidak layak mendapat skor negatif (meskipun tidak ada contoh bagaimana melakukannya).
Peter Mortensen

Saya setuju - namun tidak ada yang pernah mengubah ini (dan saya tidak mencatatnya).
smaudet

0

Anda dapat mencoba

my_ftp() {
  ftp -i -n <<EOF
    open $HOST
    user "$USER" "$PASS"
    $@
EOF
}

yang kemudian bisa Anda hubungi my_ftp $'ls subfolder\nanothercommand'

Solusi ini tidak interaktif tetapi yang terbaik yang bisa saya pikirkan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.