2012-03-03 16:26:38 +0000 2012-03-03 16:26:38 +0000
23
23

用Linux FTP用户名和密码登录

用FTP登录都是一行的命令是什么?

ftp username:password@my.domain.com

说:

用户名需要密码:密码。

答案 (5)

9
9
9
2016-05-28 21:35:36 +0000
ftp -nv yourftpserver.com

然后user your_usernameuser 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
6
6
6
2012-03-03 16:38:19 +0000
ftp ftp://username:password@my.domain.com

虽然你可以很容易地使用ftp --help

4
4
4
2016-08-05 08:38:29 +0000

最好的选择是使用.netrc和类似gpg的东西来保证安全。

我已经写了一个通用的脚本,我可能会在以后上传,但它归结为:

gpg -c .netrc

或可选的密码。

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

或者在命令行上加上一个密码和一个输出目标。

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

这里没有显示出来,但是你可以额外使用非对称密钥(如果你有设置的话)和gpg来使其更加安全。

然后当你准备登录时

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

举个例子 .netrc:

0x1&

实际上,我在不同的计算机上保留了这些文件的本地哈希值和原始副本,而不是在我使用 .netrc 文件的计算机上,并验证 .netrc 和我运行的脚本的哈希值,但这超出了 OP 的原始问题。

1
1
1
2012-12-11 06:51:02 +0000

使用 netrc 。这比在命令行上泄露密码要好。

1
1
1
2019-02-18 16:18:22 +0000

你可以尝试

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

然后你可以用my_ftp $'ls subfolder\nanothercommand'

来调用这个解决方案,虽然不是交互式的,但我能想到的最好的办法就是

编辑:你最好还是用curl来代替。