如果用户名包含@符号,我如何sftp到服务器


25

我必须通过sftp到服务器的特定端口,但用户名包含@符号。

假设用户是“ user@example.com”,而ftp服务器只是“ example.com”

我将以

sftp -oPort:8777 user@example.com@example.com

正如我所测试的,什么显然不起作用。

什么样的业余爱好者使用@创建用户名?好吧,我的老板做了。

我该如何解决?


1
尝试像这样逃避“商业广告”sftp -oPort:8777 user\@domain.com@domain.com
Tim

如果您删除用户名部分而仅离开域,输入命令后是否会提示您输入用户名?
ladaghini

@ladaghini-这将在脚本内使用...无提示。好的,我知道在脚本中包含用户名和密码的含义,但是该用户名的范围有限。它必须是sftp,因为此服务器仅生成sftp的用户名。
SpaceDog 2013年

@Tim ...转义它没有帮助。
SpaceDog

Answers:


33

通过-o User选项或User客户端配置文件(~/.ssh/config)中的等效指令传递用户名。

sftp -o Port:8777 -o User=user@example.com example.com

这适用于sshscpsshfs也。使用配置文件而不是-o选项的优点是还可以使用调用工具,ssh并且根本不允许您轻松传递命令行选项。


该用户名没有ssh访问权限,只有sftp。
SpaceDog

@DigitalRobot S / SSH / SFTP /
ladaghini

@DigitalRobot这适用于sshsftpscp也适用)。
吉尔斯(Gilles)'所以

继续。如果passwd还包含“ @”或“ /”,我们该怎么办
Shicheng Guo

@ShichengGuo ??? 密码@/密码都没有问题。您只需键入它们。SSH甚至不允许以任何方式在命令行选项或配置文件中传递密码。
吉尔斯(Gilles)“所以,别再邪恶了”

6
sftp -o Port:8777 'user@domain.com'@domain.com

这也将起作用,尽管对于他们而言,为用户提供这种类型的名称确实非常糟糕。


0

在某些SFTP服务器上,可以@使用+(“加号”)替换(“商业于”):

sftp -oPort:8777 user+example.com@example.com
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.