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?

pschmidt
sumber
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.

Lekensteyn
sumber
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)]
Nabil Kadimi
sumber
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:[email protected]/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.

PerlDuck
sumber
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 .

Esmaeil MIRZAEE
sumber
-1

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

Mradul
sumber
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