Як ви можете зробити один вкладиш з sftp, щоб увійти з паролем в одному рядку?


17

Чи є можливість встановити пароль на рядку, а також sftp?

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

Подобається це

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

Відповіді:


13

Як правило, включення пароля в командний рядок вважається ризиком безпеки, оскільки він з’явиться всім, хто може запускати ps / top, і він може бути збережений в історії вашої оболонки.

Було б набагато кращою ідеєю встановити автентифікацію на основі ключів, якщо ви можете.

Крім того, я не вірю, що це стане можливим за допомогою sftp. Він призначений для використання для безпечних передач. Якщо вам дійсно довелося зробити щось подібне, і у вас немає іншого вибору, то, ймовірно, потрібно дивитися на автоматизацію з очікуванням .


Цікавий момент!
Даніель

Було б набагато кращою ідеєю встановити автентифікацію на основі ключів, якщо ви можете. У цьому є сенс.
Чистий бігун

Очікується, що ця URL-адреса порушена
Андре Пеццацці

4
Не можу зрозуміти, чому люди підтримують відповідь, яка не забезпечує рішення.
іктоктоп

34

Як уже згадували інші, пароль командного рядка повинен бути останньою інстанцією.

Однак якщо нічого іншого неможливо; можна піти на ssh pass

sshpass -p <password> sftp user@host

2
Це слід масово підтримувати. Дійсно корисно мати sshpass. Деякі провайдери не дозволяють створювати папку .ssh і scp також заборонено.
NetSquirrel

2
добре, що у деяких інструментів є ваша спина: brew search sshpass- "Ми не додамо sshpass, тому що для початківців користувачів SSH це надто просто руйнує безпеку SSH."
олівер

4
Це має бути прийнятим рішенням. ОП запитала, як зробити цю конкретну річ - не для консультацій із безпеки (хоч і цілеспрямованих та правильних).
ebr

6

Не робіть цього - встановіть автентифікацію відкритого ключа SSH для автоматичного входу.


Чи може sftp це зробити так само, як scp?
Даніель

1
@Daniel, і sftp, і scp побудовані на SSH, що дозволяє проводити аутентифікацію на основі ключів.
Зоредаче

5

Просто використовуйте perl, ruby ​​або python для написання сценарію того, що ви намагаєтеся зробити. У разі рубіну це просто (взято з документів net-sftp API):

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

Для отримання додаткової інформації http://net-ssh.rubyforge.org/sftp/v2/api/index.html


paramiko - чистий пітон (без зайвих лібрів) і працює дуже добре
qwertzguy

3

Як зазначено в інших відповідях, використовуйте аутентифікацію відкритих ключів. Є чудова, хоч і трохи застаріла, серія IBM developerWorks, яка повинна пояснити все, що ви хочете знати про неї, а також деякі корисні додаткові інструменти, такі як брелок.


2

Для шукачів, яким не байдуже, що пароль можна побачити в командному рядку команди:

sftp userid:password@remoteHostполягає в тому, як включити пароль до sftpкоманди connect.

ОНОВЛЕННЯ: це виявилося невірно ... дивіться коментарі


OpenSSH v5.3p1 та v4.3p2, обидва на Red Hat Enterprise ...
ashnazg

1
Це виявилося невірно ... цей метод, здається, працює для мене, тому що PHP та його розширення ssh2 використовувались раніше в моєму коді, щоб зробити фактичну автономну автентифікацію ... а команда sftp запускалася пізніше. Саме цей пізній фрагмент виявився успішним у синтаксисі.
ашназг

1
Не вдалося вирішити ім’я хоста. Немає такого хоста. Він розглядає ":" ім'я користувача, яке не стосується FileZilla CLI
P

1

Я підозрюю, що відповідей стільки, скільки клієнтів FTP. SFTP-сервер не повинен приймати інформацію про автентифікацію, поки не буде встановлено шифрування, щоб захистити користувача та пароль.

Я вірю, що клієнт FileZilla дозволить передавати командний рядок користувача та пароля. Дивіться документацію тут . Враховуючи репутацію проекту FileZilla, я би сподівався, що він буде надійно працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.