Bagaimana cara sftp ke server jika nama pengguna berisi simbol @

25

Saya harus sftp ke server ke port tertentu tetapi nama pengguna berisi simbol @.

misalkan pengguna adalah "[email protected]" dan server ftp hanyalah "example.com"

Saya akan mengakhiri dengan

sftp -oPort:8777 [email protected]@example.com

apa yang jelas tidak akan berhasil, seperti yang telah saya uji.

Amatir macam apa yang menciptakan nama pengguna dengan @? Oke, bos saya yang melakukannya.

Bagaimana saya mengatasinya?

SpaceDog
sumber
1
Cobalah melarikan diri dari "komersial di" seperti itusftp -oPort:8777 user\@[email protected]
Tim
Jika Anda menghapus bagian nama pengguna dan hanya meninggalkan domain, apakah itu meminta Anda untuk nama pengguna setelah Anda memasukkan perintah?
ladaghini
@ladaghini - ini akan digunakan di dalam skrip ... tidak ada prompt yang tersedia. Oke, saya tahu implikasi memiliki nama pengguna dan kata sandi dalam skrip, tetapi nama pengguna ini memiliki area terbatas. Itu harus sftp karena server ini hanya menghasilkan nama pengguna untuk sftp.
SpaceDog
@Tim ... melarikan diri itu tidak membantu.
SpaceDog

Jawaban:

33

Masukkan nama pengguna melalui -o Useropsi, atau melalui Userdirektif yang setara dalam file konfigurasi klien ( ~/.ssh/config).

sftp -o Port:8777 -o [email protected] example.com

Ini berlaku untuk ssh, scpdan sshfsjuga. Menggunakan file konfigurasi daripada -oopsi memiliki keuntungan juga bekerja dengan alat yang memanggil sshdan jangan biarkan Anda dengan mudah melewati opsi baris perintah jika sama sekali.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Nama pengguna ini tidak memiliki akses ssh, hanya sftp.
SpaceDog
@DigitalRobot s / ssh / sftp /
ladaghini
@ DigitalRobot Ini berfungsi untuk keduanya sshdan sftp(dan scpjuga).
Gilles 'SANGAT berhenti menjadi jahat'
Berlangsung. Apa yang harus kita lakukan jika passwd juga mengandung '@' atau '/'
Shicheng Guo
@ShichengGuo ??? Tidak ada masalah dengan @atau /di kata sandi. Anda cukup mengetiknya. SSH bahkan tidak mengizinkan cara apa pun untuk memasukkan kata sandi pada opsi baris perintah atau dalam file konfigurasi.
Gilles 'SO- stop being evil'
6
sftp -o Port:8777 '[email protected]'@domain.com

Ini juga akan berfungsi, meskipun bentuknya sangat buruk bagi mereka untuk menyediakan pengguna dengan jenis nama ini.

SFTP Special
sumber
0

Mengganti @("komersial di") dengan +("tanda plus)" dapat diterima di beberapa server SFTP:

sftp -oPort:8777 [email protected]
AntonK
sumber