Как мне подключиться к серверу, если имя пользователя содержит символ @

25

Я должен sftp на сервер к определенному порту, но имя пользователя содержит символ @.

Предположим, что пользователь «user@example.com», а ftp-сервер - просто «example.com».

Я закончу

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

что явно не сработает, как я проверял.

Какой любитель создает имя пользователя с @? Хорошо, мой босс сделал.

Как мне это решить?

Spacedog
источник
1
Попробуйте убежать от "рекламы в", как этоsftp -oPort:8777 user\@domain.com@domain.com
Тим
Если вы удаляете часть имени пользователя и просто покидаете домен, запрашивает ли вас имя пользователя после ввода команды?
Ladaghini
@ladaghini - это должно использоваться внутри скрипта ... подсказки нет. Хорошо, я знаю последствия наличия имени пользователя и пароля в сценарии, но это имя пользователя имеет ограниченную область. Это должен быть sftp, потому что этот сервер просто генерирует имена пользователей для sftp.
SpaceDog
@ Тим ... спасение не помогает.
SpaceDog

Ответы:

33

Передайте имя пользователя через -o Userопцию или через эквивалентную Userдирективу в файле конфигурации клиента ( ~/.ssh/config).

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

Это относится и к ssh, scpи sshfsк тому же. -oПреимущество использования файла конфигурации вместо опций заключается также в работе с инструментами, которые вызывают sshи не позволяют легко передавать параметры командной строки, если они вообще есть.

Жиль "ТАК - перестань быть злым"
источник
Это имя пользователя не имеет доступа по ssh, просто sftp.
SpaceDog
@DigitalRobot s / ssh / sftp /
ladaghini
@DigitalRobot Это работает для обоих sshи sftpscpтоже).
Жиль "ТАК - перестань быть злым"
Продолжай. Что нам делать, если пароль также содержит «@» или «/»
Shicheng Guo
@ShichengGuo ??? Там нет проблем с @или /в пароле. Вы просто печатаете их. SSH даже не позволяет передавать пароль в командной строке или в файле конфигурации.
Жиль "ТАК - перестань быть злым"
6
sftp -o Port:8777 'user@domain.com'@domain.com

Это также сработало бы, хотя это действительно плохая форма для предоставления пользователям такого типа имени.

SFTP Special
источник
0

Замена @(«коммерческий в») на +(«знак плюс») может быть приемлемой на некоторых серверах SFTP:

sftp -oPort:8777 user+example.com@example.com
AntonK
источник