ฉันจะให้ชื่อผู้ใช้และรหัสผ่านเพื่อ wget ได้อย่างไร


157

ฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน wget:

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

แต่ wget ตอบกลับ: พอร์ตไม่ถูกต้อง

ฉันรู้ว่าเซิร์ฟเวอร์ยอมรับการรับส่งข้อมูลขาเข้าที่พอร์ต 80 ฉันจะแก้ไขปัญหานี้ได้อย่างไร


ฉันไม่คิดว่าคุณสามารถใช้ผู้ใช้ที่เชื่อถือได้: pass @ name syntax ที่นั่น; wgetมีตัวเลือกบรรทัดคำสั่งแยกต่างหากสำหรับตัวเลือกเหล่านั้นดังนั้นจึงอาจแยกสตริงอย่างไร้เดียงสาหลังจากที่:เป็นหมายเลขพอร์ต
geekosaur

คำตอบ:


198

Wget ตีความ<pass>@serveraddressเป็นพอร์ต ในการระบุชื่อผู้ใช้และรหัสผ่านให้ใช้--userและ--passwordสวิตช์:

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

จากman wget:

--user=user

--password=password

ระบุชื่อผู้ใช้ชื่อผู้ใช้และรหัสผ่านสำหรับการดึงไฟล์ FTP และ HTTP พารามิเตอร์เหล่านี้สามารถแทนที่ได้โดยใช้ --ftp-userและ--ftp-passwordตัวเลือกสำหรับการเชื่อมต่อ FTP และ--http-userและ--http-passwordตัวเลือกสำหรับการเชื่อมต่อ HTTP


48
ฉันชอบ--ask-passwordตัวเลือกที่อธิบายโดยคำตอบของ Nabil Kadimi คุณได้ใส่รหัสผ่านสุดลูกหูลูกตาและหลีกเลี่ยงการเก็บไว้ในประวัติเชลล์ของคุณ
เควิน

8
@Kevin คุณสามารถหลีกเลี่ยงการเก็บไว้ในประวัติเชลล์โดยเริ่มต้นบรรทัดด้วยอย่างน้อยหนึ่งช่องว่าง (ดังที่แสดงโดยNabil ) หากรหัสผ่าน / ทรัพยากรมีความละเอียดอ่อนคุณควรกังวลเกี่ยวกับ HTTP / FTP / การเชื่อมต่อที่ไม่ได้เข้ารหัสมากกว่าการจัดเก็บไว้ในดิสก์ของคุณ
Lekensteyn

ฉันเห็นด้วยกับปัญหารหัสผ่านที่ไม่ได้เข้ารหัสซึ่งมีความสำคัญมากกว่าในบางกรณีมากกว่าประวัติเชลล์ แต่คำตอบก็มีประโยชน์สำหรับโปรโตคอลที่ปลอดภัย นอกจากนี้บางครั้งคุณต้องกังวลเกี่ยวกับสายลับที่เข้าถึงคอมพิวเตอร์ของคุณได้มากกว่าสายลับออนไลน์ (ที่ไม่สนใจเนื้อหาที่คุณกำลังเข้าถึงหรือที่คุณไม่สนใจ) คำตอบ - ขอรหัสผ่านด้านล่างจะดีกว่าอย่างชัดเจนสำหรับการใช้งานแบบโต้ตอบในขณะที่ - คำตอบรหัสผ่านที่นี่จะง่ายขึ้นสำหรับระบบอัตโนมัติ ความคิดเห็นโดย Ixgr เกี่ยวกับ. wgetrc และ chmod ก็น่าสนใจในบางกรณี
คุณ

ตามที่ฉันเข้าใจคู่มือแล้ว Pass จะไม่ถูกตีความว่าเป็นพอร์ต "คุณสามารถเข้ารหัสชื่อผู้ใช้และรหัสผ่านของคุณภายใน URL: http://user:password@host/path" "- คู่มือ
ทิม

104

คุณมี 3 ตัวเลือกและที่นี่ไม่มีคำสั่งซื้อใดนอกจากความรู้สึกกล้า:

1 / รหัสผ่านจะปรากฏแก่ทุกคน (ใช้คำสั่งhistory)

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

รหัสผ่านจะปรากฏใน ps, top, htop และที่คล้ายกัน

2 / รหัสผ่านจะปรากฏแก่ทุกคนที่มองไหล่ของคุณ

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

สังเกตุช่องว่างสีขาวหน้าคำสั่งป้องกันการบันทึกลงในประวัติของคุณ

รหัสผ่านจะปรากฏใน ps, top, htop และที่คล้ายกัน

3 / รหัสผ่านจะไม่ปรากฏแก่ทุกคนรวมถึงคุณ

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

6
แม้ว่าจะไม่สามารถมองเห็นได้ในประวัติศาสตร์ แต่ทุกคนที่ดำเนินการคำสั่ง ps, top, htop หรือคล้ายคลึงกันนั้นจะมองเห็นได้ในขณะที่กระบวนการกำลังทำงานอยู่

4
@AbdennourTOUMI ทำไมคุณถึงปิดการใช้งานการตรวจสอบใบรับรองโดยเฉพาะถ้าคุณส่งรหัสผ่านพร้อมคำขอ? ไม่แนะนำให้เลือกโดยทั่วไป เท่าที่ "ซ่อน" รหัสผ่านในบันทึกหรือ / proc เกี่ยวข้อง manpage wget ให้ตัวเลือกเพิ่มเติม: "เพื่อป้องกันไม่ให้รหัสผ่านถูกมองเห็นเก็บไว้ใน. wgetrc หรือ. netrc และตรวจสอบให้แน่ใจเพื่อป้องกันไฟล์เหล่านั้นจาก ผู้ใช้รายอื่นที่มี "chmod" "
lxgr

2
หาก--ask-passwordไม่สามารถใช้ได้หรือคุณไม่ต้องการพิมพ์รหัสผ่านทุกครั้งwget -i link.txtสามารถช่วยได้ที่link.txtมีftp://remote_user:SECRET@ftp.example.com/file.ext
tehnicaorg

3

คุณสามารถจัดเก็บชื่อผู้ใช้และรหัสผ่านในไฟล์~/.wgetrc และเปลี่ยนการอนุญาตของไฟล์นั้นเพื่อให้ผู้ใช้ของคุณเท่านั้นที่สามารถอ่านได้:

ไฟล์~/.wgetrc:

user=john
password=SEcrEt

... แล้ว

chmod 600 ~/.wgetrc

อย่างไรก็ตามโปรดทราบว่าผู้ใช้rootนั้นยังคงสามารถมองเข้าไปในไฟล์นั้นและอ่านรหัสผ่าน

จากmanpage :

เพื่อป้องกันไม่ให้รหัสผ่านจากการถูกเห็นใช้--use-askpassหรือเก็บไว้ใน .wgetrcหรือ.netrcและให้แน่ใจว่าจะปกป้องไฟล์เหล่านั้นจากผู้ใช้อื่น ๆ "chmod"ที่มี หากรหัสผ่านมีความสำคัญจริงๆอย่าปล่อยให้ไฟล์นั้นอยู่ในไฟล์เหล่านั้น --- แก้ไขไฟล์แล้วลบออกหลังจาก Wget เริ่มทำการดาวน์โหลด


0

คุณสามารถให้ข้อมูลรับรองการตรวจสอบสิทธิ์ผ่าน--user=USERNAMEและ--password=PASSWORD; ขึ้นอยู่กับman wgetคำสั่งสามารถแทนที่การใช้--http-user=USERNAMEและ--http-password=PASSWORDสำหรับhttpการเชื่อมต่อและ--ftp-use=USERNAMEและ--ftp-password=PASSWORDสำหรับFTPการเชื่อมต่อ


-1

คำสั่งจะได้ใช้--http-userและ--http-passwordแทนและ--user --passwordในกรณีที่มีftpการร้องขอตัวเลือกที่มีและ--ftp-user--ftp-password


2
สิ่งนี้ไม่ถูกต้องทั้งหมด: man wgetระบุว่า - ผู้ใช้และ - รหัสผ่านเป็นตัวเลือกที่ถูกต้องซึ่งสามารถแทนที่ได้โดย --http-user หรือ --ftp-password
Charles Green
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.