Đăng nhập bằng tên người dùng và mật khẩu FTP của Linux


23

Lệnh nào để đăng nhập bằng FTP với một dòng?

ftp username:password@my.domain.com

nói:

Mật khẩu cần thiết cho tên người dùng: mật khẩu


2
Sử dụng man ftpđể tìm hiểu, hoặc có thể ftp --help. Đừng quên điều đó ftpcó nghĩa là các tiện ích khác nhau ....
Basile Starynkevitch

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

1
Bạn cũng nên nhớ rằng tất cả các người dùng khác trên hệ thống đều hiển thị dòng lệnh của một quy trình nhất định. Do đó, việc cung cấp mật khẩu của bạn như một phần của dòng lệnh có thể là một vấn đề bảo mật nghiêm trọng.

Câu trả lời:


8
ftp -nv yourftpserver.com

sau đó user your_username hoặcuser anonymous


Tôi đã đăng câu trả lời này vì ftp ftp://username:password@my.domain.comkhông làm việc cho tôi.

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
Điều này không hữu ích vì nó yêu cầu sử dụng tương tác. Tôi cũng có thể chỉ cần gõ 'ftp user @ của bạn'.
smaudet

3
điều này không trả lời câu hỏi
phil294

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

Bạn có thể khá dễ dàng đã sử dụng ftp --helpmặc dù.


25
Lệnh hiển thị tạo ra: "Tên hoặc dịch vụ không được biết". ftp -help tạo ra không có gì giống với ftp:, // cũng như tên người dùng: password @.
CW Holeman II

4
Phiên bản Linux nào bạn đang sử dụng? Tôi cũng nhận được "Tên hoặc dịch vụ không biết" khi tôi thử cú pháp trên. Tôi đang sử dụng CentOS 6.
Tim Ludwinski 6/2/2015

7
Tôi cũng nhận được Tên hoặc Dịch vụ không được biết đến
Kevin Johnson

6
không hoạt động với tôi, fyi trên máy chủ từ xa Ubuntu
user391339

6
Tôi cũng thấy ftp -help không hữu ích và định dạng mà bạn đề xuất không hoạt động với tôi trên Ubuntu 16.
Henry

3

Tùy chọn tốt nhất là sử dụng .netrc cùng với một cái gì đó như gpg cho mục đích bảo mật.

Tôi đã viết một kịch bản có mục đích chung cho việc này, mà tôi có thể tải lên sau, nhưng nó tập trung vào:

gpg -c .netrc

hoặc tùy chọn với cụm mật khẩu trên dòng lệnh và đích đầu ra:

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

Không được hiển thị ở đây, nhưng bạn cũng có thể sử dụng các khóa bất đối xứng (nếu bạn đã thiết lập chúng) với gpg để làm cho điều này thậm chí còn an toàn hơn.

Sau đó, khi bạn đã sẵn sàng để đăng nhập

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

Một ví dụ .netrc:

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

Tôi thực sự giữ một hàm băm cục bộ và bản sao gốc của các tệp này trên một máy tính khác với tệp tôi sử dụng tệp .netrc và xác minh hàm băm của .netrc và tập lệnh mà tôi chạy, nhưng đó là ở trên và ngoài câu hỏi ban đầu của OP.


Đây là câu trả lời tốt nhất, mặc dù có thể được cải thiện: (1) thông tin đăng nhập của người dùng trong một dòng lệnh sẽ được lưu trữ trong lịch sử shell => vấn đề bảo mật. (2) .netrc cũng hoạt động mà không có gpg => vấn đề bảo mật. Đồng thời kiểm tra xem tệp .netrc có quyền chính xác không: chmod 600 .netrc(3) một hàm shell là trình bao bọc xung quanh việc giải mã, cuộc gọi ftp và loại bỏ .netrc được giải mã sẽ hữu ích. Cảm ơn bạn đã trả lời tuyệt vời của bạn!
toán

Vậy thay vì mật khẩu FTP người dùng phải gõ cụm mật khẩu GPG? Ngoài ra, nếu kẻ tấn công có quyền ghi vào các tệp cá nhân của bạn, có rất nhiều cách để tiết lộ thông tin đăng nhập của bạn ngay khi bạn sử dụng chúng. Trong kịch bản đó, GPG chỉ thực sự giúp chống lại kẻ tấn công có quyền truy cập chỉ đọc. Điều này thực sự hiếm, tôi đoán vậy?
Konrad

1

Sử dụng netrc . Nó là tốt hơn so với việc cho mật khẩu đi trên dòng lệnh.


Câu trả lời này không xứng đáng với điểm số âm (mặc dù nó thiếu một ví dụ về cách thực hiện).
Peter Mortensen

Tôi đồng ý - tuy nhiên không ai từng thay đổi điều này (và tôi đã không đánh giá thấp nó).
smaudet

0

Bạn co thể thử

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

mà sau đó bạn có thể gọi với my_ftp $'ls subfolder\nanothercommand'

Giải pháp này không tương tác nhưng tốt nhất tôi có thể tìm ra

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.