Saya memiliki tiga komputer RUMAH, BEKERJA dan SERVER dan saya terhubung dari HOME ke SERVER oleh:
ssh -t <WORKusername>@<WORK> ssh -p23456 <SERVERusername>@localhost
Saya perlu mentransfer file dari HOME ke SERVER tetapi saya tidak dapat meninggalkan file dalam WORK
Saya juga perlu mentransfer file dari SERVER ke HOME setelah memprosesnya, bagaimana saya melakukannya?
Saya telah melihat https://serverfault.com/questions/37629/how-do-i-do-multihop-scp-transfers dan scp antara dua host jarak jauh dari PC (ketiga) saya, tetapi saya tidak dapat mengubah ssh config pada mesin HOME
Dan saya sudah mencoba ini tetapi saya tidak mendapat tempat:
$ scp -o ProxyCommand="ssh <WORKusername>@<WORK> nc localhost" ASPEC.zip <SERVERusername>@localhost:~/
<WORKusername>@<WORK>'s password:
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port]
[-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]
[-x proxy_address[:port]] [hostname] [port[s]]
ssh_exchange_identification: Connection closed by remote host
lost connection
Saya juga sudah mencoba yang berikut tetapi ini adalah kebalikan dari mentransfer file dari SERVER -> HOME:
ssh -t <WORKusername>@<WORK> "ssh -p 23456 <SERVERusername>@localhost \"cat file.zip\""
Saya juga sudah mencoba tar tetapi tidak berhasil:
tar c file.zip | ssh -t <WORKusername>@<WORK> "ssh -p 23456 <SERVERusername>@localhost | tar x"
Pseudo-terminal will not be allocated because stdin is not a terminal.
<WORKusername>@<WORK>'s password:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
Lalu saya mencoba:
# From home:
$ ssh -L 23456:<SERVERusername>@localhost:22 <WORKusername>@<WORK>
# After ssh, in WORK:
$ ssh -p 23456 <SERVERusername>@localhost
# From home:
$ scp -P file.zip <SERVERusername>@localhost:~/
Dan saya mendapatkan kesalahan ini ketika saya memberikan perintah scp,
# on WORK terminal:
channel 3: open failed: administratively prohibited: open failed
# on SERVER terminal:
ssh_exchange_identification: Connection closed by remote host
lost connection
Saya juga mencoba rsync tetapi tidak berhasil:
rsync -e "ssh -A -t <WORKusername>@<WORK>e ssh -p23456 <SERVERusername>@localhost" file.zip :~/
Bagaimana saya scp dari HOME untuk mentransfer file ke SERVER?
Dan juga dari SERVER ke HOME?
scp <localfile> <workusername>@<work>:/tmp/<filename> && ssh -t <WORKusername>@<WORK> scp -P23456 /tmp/<filename> <serveruser>@localhost:/<somedirectoryontheserver>
Jadi pertama-tama Anda scp untuk pekerjaan Anda dan kemudian Anda memberikan (via ssh) perintah ke komputer kerja Anda untuk scp lebih jauh ke server. Meskipun saya bingung mengapa Anda terhubung ke server melalui localhost. Apakah server virtual di komputer kantor Anda? Jika berhasil, saya akan mentransfernya ke bagian jawaban.Jawaban:
Coba gunakan ini:
ProxyCommand
buat proxy di WORK host yang terhubung ke SERVER: SERVERPORT (lihat nc ).%h
dan%p
merupakan variabel ssh - host target dan port masing-masing.sumber
SERVERUSER@SERVER:remotefile
danlocalfile
, seperti:scp -P SERVERPORT -o 'ProxyCommand ssh -p WORKPORT WORKUSER@WORK nc %h %p 2>/dev/null' SERVERUSER@SERVER:remotefile localfile
ssh_exchange_identification: Connection closed by remote host
ketika mentransfer dari HOME ke SERVER = (Anda dapat mencoba sesuatu seperti:
sumber