Làm cách nào để cung cấp tên người dùng và mật khẩu để wget?


157

Tôi đã cố gắng kết nối với máy chủ qua wget:

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

Nhưng wget trả lời: cổng không hợp lệ

Tôi biết rằng máy chủ chấp nhận lưu lượng truy cập đến tại cổng 80. Làm cách nào để khắc phục sự cố này?


Tôi không nghĩ bạn có thể sử dụng người dùng một cách đáng tin cậy: cú pháp pass @ name ở đó; wgetthay vào đó có các tùy chọn dòng lệnh riêng biệt, vì vậy có thể phân tích cú pháp chuỗi :một cách ngây thơ sau số cổng.
geekizard

Câu trả lời:


198

Wget phiên dịch <pass>@serveraddresslà cổng. Để chỉ định tên người dùng và mật khẩu, hãy sử dụng --user--passwordchuyển đổi:

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

Từ man wget:

--user=user

--password=password

Chỉ định tên người dùng và mật khẩu mật khẩu cho cả truy xuất tệp FTP và HTTP. Các tham số này có thể được ghi đè bằng cách sử dụng --ftp-user--ftp-passwordtùy chọn cho các kết nối FTP và --http-user--http-passwordtùy chọn cho các kết nối HTTP.


48
Tôi thích --ask-passwordtùy chọn được mô tả bởi câu trả lời của Nabil Kadimi. Nó cho phép bạn nhập mật khẩu vô hình trên một dòng khác và tránh lưu trữ nó trong lịch sử shell của bạn.
Kevin

8
@Kevin Bạn có thể tránh lưu trữ nó trong lịch sử shell bằng cách bắt đầu dòng có ít nhất một khoảng trắng (như được hiển thị bởi Nabil ). Nếu mật khẩu / tài nguyên nhạy cảm, thì bạn nên lo lắng nhiều hơn về HTTP / FTP không được mã hóa / bất kỳ kết nối nào hơn là lưu trữ trên đĩa của bạn.
Lekensteyn

Tôi đồng ý rằng vấn đề mật khẩu không được mã hóa quan trọng hơn trong một số trường hợp so với lịch sử shell, nhưng câu trả lời cũng hữu ích cho các giao thức bảo mật. Ngoài ra, đôi khi bạn phải lo lắng nhiều hơn về các gián điệp có quyền truy cập vào máy tính của mình hơn các gián điệp trực tuyến (không quan tâm đến nội dung bạn đang truy cập hoặc bạn không quan tâm). Câu trả lời --ask-password dưới đây rõ ràng tốt hơn cho việc sử dụng tương tác, trong khi câu trả lời --password ở đây dễ dàng hơn cho tự động hóa. Nhận xét của Ixgr về .wgetrc và chmod cũng thú vị trong một số trường hợp.
youen 17/07/17

Theo tôi hiểu hướng dẫn, pass không được hiểu là cổng. "Bạn cũng có thể mã hóa tên người dùng và mật khẩu của mình trong một URL: http://user:password@host/path" "- thủ công
Tim

104

Bạn có 3 tùy chọn và ở đây không có thứ tự cụ thể nào ngoài cảm giác ruột thịt:

1 / Mật khẩu được hiển thị cho bất cứ ai (sử dụng lệnh history)

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

Mật khẩu cũng sẽ được hiển thị trong ps, top, htop và tương tự.

2 / Mật khẩu hiển thị cho bất cứ ai nhìn sau vai bạn

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

Lưu ý khoảng trắng trước lệnh, nó ngăn lưu nó vào lịch sử của bạn.

Mật khẩu cũng sẽ được hiển thị trong ps, top, htop và tương tự.

3 / Mật khẩu không hiển thị với bất kỳ ai kể cả bạn

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

6
Mặc dù nó không thể nhìn thấy trong lịch sử, nhưng tất cả những ai thực hiện lệnh ps, top, htop hoặc tương tự đều hiển thị trong khi tiến trình đang chạy.

4
@AbdennourTOUMI Tại sao bạn lại tắt kiểm tra chứng chỉ, đặc biệt nếu bạn đang gửi mật khẩu với yêu cầu? Điều đó chắc chắn là không nên nói chung. Liên quan đến việc "ẩn" mật khẩu trên nhật ký hoặc / Proc, trang wget cung cấp tùy chọn bổ sung: "Để ngăn mật khẩu không bị nhìn thấy, hãy lưu trữ chúng trong .wgetrc hoặc .netrc và đảm bảo bảo vệ các tệp đó khỏi những người dùng khác có "chmod". "
lxgr

2
Nếu --ask-passwordkhông có sẵn hoặc bạn không muốn nhập mật khẩu mỗi lần, wget -i link.txtcó thể giúp đỡ, nơi link.txtchứaftp://remote_user:SECRET@ftp.example.com/file.ext
tehnicaorg

3

Bạn cũng có thể lưu tên người dùng và mật khẩu trong tệp ~/.wgetrc và thay đổi quyền của tệp đó để chỉ người dùng của bạn có thể đọc được:

Tập tin ~/.wgetrc:

user=john
password=SEcrEt

... và sau đó

chmod 600 ~/.wgetrc

Lưu ý, tuy nhiên, người dùng rootvẫn có thể xem lén tập tin đó và đọc mật khẩu.

Từ trang hướng dẫn :

Để ngăn mật khẩu không bị nhìn thấy, hãy sử dụng --use-askpasshoặc lưu trữ chúng trong .wgetrchoặc .netrc, và đảm bảo bảo vệ các tệp đó khỏi những người dùng khác "chmod". Nếu mật khẩu thực sự quan trọng, đừng để chúng nằm trong các tệp đó --- chỉnh sửa các tệp và xóa chúng sau khi Wget đã bắt đầu tải xuống.


0

Bạn có thể cung cấp thông tin xác thực qua --user=USERNAME--password=PASSWORD; dựa trên man wget, lệnh có thể được ghi đè bằng cách sử dụng --http-user=USERNAME--http-password=PASSWORDcho http kết nối và --ftp-use=USERNAME--ftp-password=PASSWORDcho ftp kết nối.


-1

Lệnh có thể đã được sử dụng --http-user--http-passwordthay vì --user--password. Trong trường hợp ftpyêu cầu các tùy chọn là --ftp-user--ftp-password.


2
Điều này không hoàn toàn chính xác: man wgetchỉ ra rằng --user và --password là các tùy chọn hợp lệ, có thể bị ghi đè bởi --http-user hoặc --ftp-password
Charles Green
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.