Bagaimana cara saya memberikan nama pengguna dan kata sandi untuk wget?


157

Saya sudah mencoba terhubung ke server melalui wget:

wget http://<user>:<pass>@serveradress

Tetapi wget merespon: port tidak valid

Saya tahu bahwa server menerima lalu lintas masuk di port 80. Bagaimana saya bisa memperbaiki masalah ini?


Saya tidak berpikir Anda dapat menggunakan pengguna dengan andal: pass sintaks @ nama di sana; wgetmemiliki opsi baris perintah yang terpisah untuk mereka, jadi mungkin secara naif mengurai string setelah :sebagai nomor port.
— geekosaur

Jawaban:


198

Wget mengartikan <pass>@serveraddresssebagai port. Untuk menentukan nama pengguna dan kata sandi, gunakan --userdan --passwordaktifkan:

wget --user user --password pass http://example.com/

Dari man wget:

--user=user

--password=password

Tentukan nama pengguna dan kata sandi kata sandi untuk pengambilan file FTP dan HTTP. Parameter ini dapat diganti menggunakan --ftp-userdan --ftp-passwordopsi untuk koneksi FTP dan --http-userdan --http-passwordopsi untuk koneksi HTTP.


49
Saya lebih suka --ask-passwordopsi yang dijelaskan oleh jawaban Nabil Kadimi. Ini membuat Anda memasukkan kata sandi tanpa terlihat di baris lain dan menghindari menyimpannya dalam riwayat shell Anda.
— Kevin

8
@Kevin Anda dapat menghindari menyimpannya dalam riwayat shell dengan memulai baris dengan setidaknya satu ruang (seperti yang ditunjukkan oleh Nabil ). Jika kata sandi / sumber daya sensitif, maka Anda harus lebih khawatir tentang HTTP / FTP / koneksi apa pun yang tidak terenkripsi daripada menyimpannya di disk Anda.
— Lekensteyn

Saya setuju bahwa masalah kata sandi yang tidak terenkripsi menjadi lebih penting dalam beberapa kasus daripada riwayat shell, tetapi jawabannya juga berguna untuk protokol aman. Juga, kadang-kadang Anda harus lebih khawatir tentang mata-mata yang memiliki akses ke komputer Anda daripada mata-mata online (yang tidak tertarik dengan konten yang Anda akses atau yang tidak Anda pedulikan). Jawaban --ask-password di bawah ini jelas lebih baik untuk penggunaan interaktif, sedangkan jawaban --password di sini lebih mudah untuk otomatisasi. Komentar oleh Ixgr tentang .wgetrc dan chmod juga menarik dalam beberapa kasus.
— youen

Seperti yang saya mengerti manual, pass tidak diartikan sebagai port. "Anda juga dapat menyandikan nama pengguna dan kata sandi Anda dalam URL: http://user:password@host/path" "- manual
— Tim

104

Anda memiliki 3 opsi dan di sini tidak ada urutan khusus selain nyali perasaan:

1 / Kata Sandi dapat dilihat oleh siapa saja (menggunakan perintah history)

wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext

Kata sandi juga akan terlihat dalam ps, atas, htop, dan sejenisnya.

2 / Kata Sandi dapat dilihat oleh siapa saja yang melihat ke belakang bahu Anda

 wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext

Perhatikan spasi putih sebelum perintah, mencegah menyimpannya ke riwayat Anda.

Kata sandi juga akan terlihat dalam ps, atas, htop, dan sejenisnya.

3 / Kata Sandi tidak terlihat oleh siapa pun termasuk Anda

wget --user=remote_user --ask-password ftp://ftp.example.com/file.ext
Password for user `remote_user': [SECRET (not visible)]

6
Sementara itu tidak terlihat dalam sejarah, itu terlihat oleh semua yang melakukan perintah ps, top, htop atau serupa saat proses sedang berjalan.

4
@AbdennourTOUMI Mengapa Anda menonaktifkan pemeriksaan sertifikat, terutama jika Anda mengirim kata sandi dengan permintaan? Itu jelas tidak dianjurkan secara umum. Sejauh "menyembunyikan" kata sandi pada log atau / proc, wget manpage memberikan opsi tambahan: "Untuk mencegah kata sandi tidak terlihat, simpan di .wgetrc atau .netrc, dan pastikan untuk melindungi file-file tersebut dari pengguna lain dengan "chmod". "
— lxgr

2
Jika --ask-passwordtidak tersedia atau Anda tidak ingin mengetikkan kata sandi setiap saat, wget -i link.txtdapat membantu, di mana link.txtberisiftp://remote_user:SECRET@ftp.example.com/file.ext
— tehnicaorg

3

Anda juga dapat menyimpan nama pengguna dan kata sandi dalam file ~/.wgetrc dan mengubah izin file itu sehingga hanya pengguna Anda yang dapat membacanya:

File ~/.wgetrc:

user=john
password=SEcrEt

... lalu

chmod 600 ~/.wgetrc

Namun, perhatikan bahwa pengguna rootmasih dapat mengintip ke dalam file itu dan membaca kata sandi.

Dari halaman manual :

Agar kata sandi tidak terlihat, gunakan --use-askpassatau simpan di .wgetrcatau .netrc, dan pastikan untuk melindungi file-file itu dari pengguna lain "chmod". Jika kata sandi benar-benar penting, jangan biarkan mereka terbaring di file-file itu juga --- edit file dan hapus setelah Wget memulai unduhan.


0

Anda dapat memberikan kredensial otentikasi melalui --user=USERNAMEdan --password=PASSWORD; berdasarkan pada man wget, perintah dapat diganti menggunakan --http-user=USERNAMEdan --http-password=PASSWORDuntuk koneksi http dan --ftp-use=USERNAMEdan --ftp-password=PASSWORDuntuk koneksi ftp .


-1

Perintah bisa digunakan --http-userdan --http-passwordbukannya --userdan --password. Dalam hal ftppermintaan opsi adalah --ftp-userdan --ftp-password.


2
Ini tidak sepenuhnya benar: man wgetmenunjukkan bahwa --user dan --password adalah opsi yang valid, yang dapat diganti oleh --http-user atau --ftp-password
— Charles Green
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.