Làm thế nào bạn có thể thực hiện một lớp lót với sftp để đăng nhập bằng mật khẩu trên cùng một dòng?


16

Có một tùy chọn để đặt mật khẩu trên dòng cũng như với sftp?

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ 

Như thế này

linux~ $ sftp USERNAME@FTP.WEBSITE.COM:/DIRECTORY_TO_GO_TO/ -p PASSWORD? 

Câu trả lời:


13

Nói chung bao gồm mật khẩu trong một dòng lệnh được coi là rủi ro bảo mật vì nó sẽ hiển thị cho bất kỳ ai khác có thể chạy ps / top và nó có thể được lưu trong lịch sử shell của bạn.

Sẽ là một ý tưởng tốt hơn nhiều để thiết lập xác thực dựa trên khóa nếu bạn có thể.

Ngoài ra, tôi không tin rằng nó sẽ có thể với sftp. Nó có nghĩa là được sử dụng để chuyển an toàn. Nếu bạn thực sự phải làm một cái gì đó như thế này và bạn không có lựa chọn nào khác thì có lẽ bạn cần phải xem xét tự động hóa với mong đợi .


Điểm thú vị!
Daniel

Sẽ là một ý tưởng tốt hơn nhiều để thiết lập xác thực dựa trên khóa nếu bạn có thể. Điều đó có lý.
Á quân Net

Url mong đợi này bị hỏng
André Perazzi

4
Không thể hiểu tại sao mọi người đưa ra một câu trả lời không cung cấp giải pháp.
itoctopus

33

Như những người khác đã đề cập, mật khẩu dòng lệnh nên là phương sách cuối cùng.

Tuy nhiên, nếu không có gì khác là có thể; ai có thể đi qua ssh

sshpass -p <password> sftp user@host

2
Điều này nên được nâng cấp ồ ạt. Nó thực sự hữu ích để có sshpass. Một số nhà cung cấp không cho phép bạn tạo thư mục .ssh và scp cũng không được phép.
NetSquirrel

2
thật tốt khi một số công cụ hỗ trợ bạn: brew search sshpass- "Chúng tôi sẽ không thêm sshpass vì điều đó khiến người dùng SSH mới dễ dàng phá hỏng bảo mật của SSH."
oliver

4
Đây phải là giải pháp được chấp nhận. OP đã hỏi làm thế nào để làm điều cụ thể này - không phải cho lời khuyên bảo mật (mặc dù có thiện chí và chính xác).
ebr

6

Đừng làm vậy - thiết lập xác thực khóa công khai SSH để đăng nhập tự động.


Sftp có thể làm điều này tương tự là scp?
Daniel

1
@Daniel, cả sftp và scp đều được xây dựng trên SSH cho phép xác thực dựa trên khóa.
Zoredache

5

Chỉ cần sử dụng perl, ruby ​​hoặc python để kịch bản những gì bạn đang cố gắng làm. Trong trường hợp của ruby, nó chỉ (lấy từ các tài liệu API net-sftp):

require 'net/sftp'

Net::SFTP.start('host', 'username', :password => 'password') do |sftp|

  # upload a file or directory to the remote host

  sftp.upload!("/path/to/local", "/path/to/remote")

end

Để biết thêm thông tin http://net-ssh.rubyforge.org/sftp/v2/api/index.html


paramiko là python thuần (không có libs thêm) và hoạt động rất tốt
qwertzguy

3

Như các câu trả lời khác đã nêu, sử dụng xác thực khóa công khai. Mặc dù vậy, có một loạt tuyệt vời, mặc dù có một chút thời gian, nhưng IBM IBM sẽ giải thích mọi thứ bạn muốn biết về nó, cũng như một số công cụ bổ sung hữu ích như móc khóa.


2

Đối với những người tìm kiếm không quan tâm rằng mật khẩu có thể được nhìn thấy trong lệnh dòng lệnh:

sftp userid:password@remoteHostlà làm thế nào để bao gồm mật khẩu trong sftplệnh kết nối.

CẬP NHẬT: điều này hóa ra là không chính xác ... xem bình luận


OpenSSH v5.3p1 và v4.3p2, cả trên Red Hat Enterprise ...
ashnazg

1
Điều này hóa ra là không chính xác ... phương pháp này dường như hoạt động với tôi vì PHP và phần mở rộng ssh2 của nó đã được sử dụng trước đó trong mã của tôi để thực hiện xác thực độc lập thực sự ... và lệnh sftp sẽ được chạy sau đó. Đây là phần sau này, nơi cú pháp xuất hiện để thành công.
ashnazg

1
Không thể giải quyết tên người dùng máy chủ: Không có máy chủ nào được biết đến. Nó đang xem xét ":" trong tên người dùng không phải là trường hợp trong FileZilla CLI
P Satish Patro

1

Tôi nghi ngờ rằng có nhiều câu trả lời như có khách hàng FTP. Máy chủ SFTP không nên chấp nhận thông tin xác thực cho đến khi mã hóa được thiết lập, để người dùng và mật khẩu được bảo vệ.

Tôi tin rằng ứng dụng khách FileZilla sẽ cho phép truyền dòng lệnh của người dùng và mật khẩu .. xem tài liệu ở đây . Với danh tiếng của dự án FileZilla, tôi hy vọng nó sẽ hoạt động an toàn.

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.