Войти с Linux FTP имя пользователя и пароль

23

Что за команда для входа с FTP все в одну строку?

ftp username:password@my.domain.com

говорит:

Пароль требуется для имени пользователя: пароль

Питер Мортенсен
источник
2
Используйте, man ftpчтобы узнать, или, может быть ftp --help. Не забывайте, что это ftpможет означать разные утилиты ....
Василий Старынкевич
2
ftp ftp://username:password@my.domain.com
1
Вы также должны помнить, что командная строка данного процесса видна всем остальным пользователям в системе. Поэтому предоставление вашего пароля как части командной строки может быть серьезной проблемой безопасности.
Связанные - superuser.com/questions/937124/… .
СЛМ

Ответы:

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
user391339
источник
2
Это не так полезно, потому что требует интерактивного использования. Я мог бы просто набрать 'ftp user @ yourserver'.
Смодеть
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
у меня не работает, к вашему сведению на удаленном сервере 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 и сценария, который я запускаю, но это выше и вне оригинального вопроса ОП.

smaudet
источник
Это лучший ответ, хотя его можно улучшить: (1) учетные данные пользователя в одной командной строке будут храниться в истории оболочки => проблемы безопасности. (2) .netrc также работает без проблем с gpg =>. Также убедитесь, что файл .netrc имеет правильные разрешения: chmod 600 .netrc(3) было бы полезно использовать функцию оболочки в качестве оболочки для расшифровки, вызова ftp и удаления дешифрованного .netrc. Спасибо за ваш отличный ответ!
математика
Таким образом, вместо пароля FTP пользователь должен ввести пароль GPG? Кроме того, если у злоумышленника есть доступ для записи ваших личных файлов, существует множество способов раскрытия ваших учетных данных, как только вы их используете. В этом случае GPG действительно помогает против злоумышленника с доступом только для чтения. Что действительно редко, я думаю?
Конрад
1

Используйте netrc . Это лучше, чем вводить пароль в командной строке.

Nemo
источник
Этот ответ не заслуживает отрицательной оценки (хотя в нем нет примера того, как это сделать).
Питер Мортенсен
Я согласен - однако никто никогда не менял это (и я не отрицал это).
Смодеть
0

Можешь попробовать

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

который вы затем можете позвонить с my_ftp $'ls subfolder\nanothercommand'

Это решение не интерактивное, но лучшее, что я мог понять

phil294
источник