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


23

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

ftp username:password@my.domain.com

说:

用户名密码:password


2
使用man ftp找出来,或者可能ftp --help。不要忘了,ftp可能意味着不同的实用程序....
巴西莱Starynkevitch

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

1
您还应该记住,给定进程的命令行对系统上的所有其他用户都是可见的。因此,在命令行中提供密码可能是一个严重的安全问题。

Answers:


8
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

2
这不是很有用,因为它需要交互使用。我也可以只输入“ ftp user @ yourserver”。
smaudet

3
这不能回答问题
phil294

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

您可以很容易地使用ftp --help它。


25
显示的命令产生:“名称或服务未知”。ftp -help不会产生与ftp :、 //或username:password @相同的结果。
CW Holeman II

4
您正在使用哪个版本的Linux?尝试上述语法时,还会出现“名称或服务未知”的信息。我使用CentOS的6
蒂姆Ludwinski

7
我还不知道名称或服务
凯文·约翰逊

6
对我不起作用,在ubuntu远程服务器上运行
fyi

6
我也觉得ftp -help 没有帮助,在Ubuntu 16上,您建议的格式对我不起作用。–
Henry

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和运行的脚本的哈希,但这在上面和超出了OP最初的问题。


这是最佳答案,尽管可以改进:(1)单个命令行中的用户凭据将存储在shell历史记录=>安全问题中。(2).netrc也可以正常工作,没有gpg =>安全问题。还要检查.netrc文件是否具有正确的权限:chmod 600 .netrc(3)作为解密,ftp调用和删除解密的.netrc的包装器的shell函数将很有帮助。感谢您的出色回答!
数学

因此,用户必须输入GPG密码而不是FTP密码?另外,如果攻击者具有对您的个人文件的写访问权限,则有无数种方法可在您使用它们后立即显示您的凭据。在这种情况下,GPG只能真正帮助具有只读访问权限的攻击者。我猜哪个真的很罕见?
康拉德

1

使用netrc。这比在命令行上提供密码要好。


这个答案不应该得到否定的分数(尽管缺少如何做的例子)。
彼得·莫滕森

我同意-但是没有人改变过这个(我也没有投票反对)。
smaudet

0

你可以试试

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

然后可以打电话给 my_ftp $'ls subfolder\nanothercommand'

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.