Làm thế nào để scp qua hai ssh


0

Tôi có ba máy tính HOME, WORK và SERVER và tôi được kết nối từ HOME đến SERVER bằng cách:

ssh -t <WORKusername>@<WORK> ssh -p23456 <SERVERusername>@localhost

Tôi cần chuyển tệp từ HOME sang SERVER nhưng tôi không thể để tệp trong CÔNG VIỆC

Ngoài ra tôi sẽ cần phải chuyển một tập tin từ SERVER sang HOME sau khi xử lý nó, làm thế nào để tôi làm điều đó?

Tôi đã xem https://serverfault.com/questions/37629/how-do-i-do-multihop-scp-translikescp giữa hai máy chủ từ xa từ máy tính của tôi (thứ ba) nhưng tôi không thể thay đổi ssh cấu hình trên CHỦ máy

Và tôi đã thử điều này nhưng tôi không nhận được:

$ 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

Tôi cũng đã thử các cách sau nhưng đây là cách ngược lại để chuyển tệp từ SERVER -> HOME:

ssh -t <WORKusername>@<WORK> "ssh -p 23456 <SERVERusername>@localhost \"cat file.zip\""

Tôi cũng đã thử tar nhưng nó không hoạt động:

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

Sau đó tôi đã thử:

# 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:~/

Và tôi đã nhận được những lỗi này khi tôi đưa ra lệnh 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

Tôi cũng đã thử rsync nhưng nó không hoạt động:

rsync -e "ssh -A -t <WORKusername>@<WORK>e ssh -p23456 <SERVERusername>@localhost" file.zip :~/

Làm cách nào tôi có thể scp từ HOME để chuyển tệp sang SERVER?

Và cũng từ SERVER đến HOME?


Bạn đã thử scp từ nhà đến nơi làm việc và sau đó từ công việc đến máy chủ? Một cái gì đó như thế này (từ đầu; có thể không hoạt động): scp <localfile> <workusername>@<work>:/tmp/<filename> && ssh -t <WORKusername>@<WORK> scp -P23456 /tmp/<filename> <serveruser>@localhost:/<somedirectoryontheserver>Vì vậy, trước tiên bạn hãy đưa nó vào công việc của bạn và sau đó bạn đưa (thông qua ssh) lệnh cho máy tính làm việc của bạn để đưa nó tới máy chủ. Nó đánh đố tôi mặc dù tại sao bạn kết nối với máy chủ qua localhost. Là một máy chủ ảo trên máy tính làm việc của bạn? Nếu nó hoạt động tôi sẽ chuyển nó vào phần trả lời.
bất cứ lúc nào

Câu trả lời:


3

Hãy thử sử dụng cái này:

scp -P SERVERPORT -o 'ProxyCommand ssh -p WORKPORT WORKUSER@WORK nc %h %p 2>/dev/null' localfile SERVERUSER@SERVER:remotefile

ProxyCommandtạo proxy trên máy chủ WORK được kết nối với SERVER: SERVERPORT (xem nc ). %h%plà các biến ssh - máy chủ đích và cổng tương ứng.


cảm ơn nó hoạt động nhưng làm thế nào để tôi làm ngược lại từ SERVER sang HOME?
alvas

cùng một cách, chỉ cần trao đổi SERVERUSER@SERVER:remotefilelocalfile, như:scp -P SERVERPORT -o 'ProxyCommand ssh -p WORKPORT WORKUSER@WORK nc %h %p 2>/dev/null' SERVERUSER@SERVER:remotefile localfile
go1dshtein

Tôi nhận được ssh_exchange_identification: Connection closed by remote hostkhi chuyển từ HOME sang SERVER = (
alvas

ah typo errrors, bây giờ nó hoạt động, woohoo !! cảm ơn rất nhiều!!!!
alvas

0

Bạn có thể thử một cái gì đó như:

cat localfile | ssh <WORKusername>@<WORK> "ssh -p23456 <SERVERusername>@localhost 'cat > remotefile'"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.