使用 Linux FTP 用户名和密码登录

30 linux ftp passwords command-line login

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

ftp username:password@my.domain.com
Run Code Online (Sandbox Code Playgroud)

说:

用户名需要密码:password

use*_*339 14

ftp -nv yourftpserver.com
Run Code Online (Sandbox Code Playgroud)

然后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
Run Code Online (Sandbox Code Playgroud)

  • 这不能回答问题 (4认同)
  • 这不是很有用,因为它需要交互式使用。我也可以输入'ftp user@yourserver'。 (3认同)

sma*_*det 5

出于安全目的,最好的选择是使用.netrc以及 gpg 之类的东西。

我为此编写了一个通用脚本,我可能会稍后上传,但它可以归结为:

gpg -c .netrc
Run Code Online (Sandbox Code Playgroud)

或者可选地在命令行上使用密码和输出目标:

gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc
Run Code Online (Sandbox Code Playgroud)

此处未显示,但您还可以将非对称密钥(如果您设置了它们)与 gpg 一起使用,以使其更加安全。

然后当您准备好登录时

gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc
Run Code Online (Sandbox Code Playgroud)

.netrc 示例:

machine google.com
login <username>
password <secretpassword>
Run Code Online (Sandbox Code Playgroud)

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


phi*_*294 5

你可以试试

my_ftp() {
  ftp -i -n <<EOF
    open $HOST
    user "$USER" "$PASS"
    $@
EOF
}
Run Code Online (Sandbox Code Playgroud)

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

该解决方案不是交互式的,但是我能想到的最好的解决方案

编辑:你可能最好只使用curl。


小智 2

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