Увійти за допомогою імені користувача та пароля FTP Linux


23

Яка команда для входу в систему за допомогою FTP все одним рядком?

ftp username:password@my.domain.com

каже:

Пароль, необхідний для імені користувача: пароль


2
Скористайтеся, man ftpщоб дізнатися, а може, й ftp --help. Не забувайте, що це ftpможе означати різні комунальні послуги ....
Basile Starynkevitch

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

1
Також слід пам’ятати, що командний рядок даного процесу видно всім іншим користувачам у системі. Тому надання пароля як частини командного рядка може бути серйозною проблемою безпеки.

Пов’язані - superuser.com/questions/937124/… .
slm

Відповіді:


8
ftp -nv yourftpserver.com

тоді user your_username абоuser anonymous


Я опублікував цю відповідь, оскільки ftp ftp://username:password@my.domain.comне працював для мене.

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
Це не так корисно, оскільки воно вимагає інтерактивного використання. Я також можу просто ввести "ftp user @ yourserver".
smaudet

3
це не відповідає на питання
phil294

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

Ти міг би досить легко використати ftp --help.


25
Показана команда видає: "Ім'я або послуга невідомі". ftp -help не створює нічого подібного до ftp :, // ні імені користувача: пароль @.
CW Holeman II

4
Яку версію Linux ви використовуєте? Я також отримую "Ім'я або послуга невідома", коли я пробую вищевказаний синтаксис. Я використовую CentOS 6.
Тім Людвинський

7
Я також отримую невідоме ім’я чи службу
Кевін Джонсон

6
не працює для мене, fyi на віддаленому сервері ubuntu
user391339

6
Я також виявив, що ftp -help непотрібний формат, який ви пропонуєте, не працює для мене на ubuntu 16.
Генрі

3

Найкращий варіант - використовувати .netrc разом із чимось на зразок gpg з метою безпеки.

Я написав для цього сценарій загального призначення, який я можу завантажити пізніше, але він зводиться до:

gpg -c .netrc

або необов'язково із парольною фразою на командному рядку та вихідним пунктом призначення:

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

Тут не показано, але ви можете додатково використовувати асиметричні ключі (якщо вони встановлені) з gpg, щоб зробити це ще більш захищеним.

Тоді, коли ви будете готові до входу

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

Приклад .netrc:

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

Я фактично зберігаю локальний хеш і оригінальну копію цих файлів на іншому комп'ютері, ніж той, на якому я використовую файли .netrc, і перевіряю хеш .netrc та скрипт, який я запускаю, але це вище і поза початковим питанням ОП.


Це найкраща відповідь, хоча її можна вдосконалити: (1) облікові дані користувачів в одному командному рядку будуть зберігатися в історії оболонок => проблеми безпеки. (2) .netrc працює також без gpg => проблем із безпекою. Також переконайтеся, що файл .netrc має правильні дозволи: chmod 600 .netrc(3) корисна функція оболонки як обгортка навколо розшифровки, ftp-виклику та видалення розшифрованого .netrc. Дякую за чудову відповідь!
математика

Тож замість пароля FTP користувач має ввести пропускну фразу GPG? Крім того, якщо зловмисник має доступ до запису до ваших особистих файлів, існує безліч способів розкрити ваші облікові дані, як тільки ви їх використовуєте. У цьому сценарії GPG реально допомагає проти зловмисника з доступом лише для читання. Думаю, що насправді рідко?
Конрад

1

Використовуйте netrc . Це краще, ніж віддавати пароль у командному рядку.


Ця відповідь не заслуговує на негативну оцінку (хоча бракує прикладу, як це зробити).
Пітер Мортенсен

Я погоджуюся - однак ніхто ніколи цього не змінював (і я цього не сприймав).
smaudet

0

Ви можете спробувати

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

з яким потім можна дзвонити my_ftp $'ls subfolder\nanothercommand'

Це рішення не є інтерактивним, але найкращим, що я міг зрозуміти

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