Câu trả lời:
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 .
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
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."
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
Đố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@remoteHost
là làm thế nào để bao gồm mật khẩu trong sftp
lệ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
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.