Як scp через два ssh


0

У мене три комп'ютери HOME, WORK і SERVER і я підключена з HOME до SERVER:

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

мені потрібно перенести файл з HOME в SERVER але я не можу залишити файл РОБОТА

Також мені потрібно перенести файл з сервера SERVICE до HOME після обробки, як це зробити?

Я подивився https://serverfault.com/questions/37629/how-do-i-do-multihop-scp-transfers і scp між двома віддаленими хостами від мого (третього) ПК але я не можу змінити конфігурацію SSH на HOME машини

І я спробував це, але я нікуди не дістався:

$ 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

Я також спробував наступне, але це зворотний для передачі файлу з SERVER - & gt; HOME:

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

Я також спробував тар, але він не працював:

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

Тоді я спробував:

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

І я отримав цю помилку, коли я даю команду 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

Я також спробував rsync, але він не працював:

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

Як я можу scp від HOME для передачі файлу до SERVER?

А також від SERVER до HOME?


Ви намагалися scp з дому на роботу, а потім з роботи на сервер? Щось подібне (з голови, може не працювати з коробки): scp <localfile> <workusername>@<work>:/tmp/<filename> && ssh -t <WORKusername>@<WORK> scp -P23456 /tmp/<filename> <serveruser>@localhost:/<somedirectoryontheserver> Отже, спочатку ви надішлете його на свою роботу, а потім надаєте (через ssh) команду вашому робочому комп'ютеру, щоб перейти до сервера. Це мене загадки, тому чому ви підключаєтеся до сервера через localhost. Чи є віртуальний сервер на вашому робочому комп'ютері? Якщо він працює, я переведу його в розділ відповідей.
agtoever

Відповіді:


3

Спробуйте використати це:

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

ProxyCommand створити проксі на хості WORK, підключеному до SERVER: SERVERPORT (див nc ). %h і %p є змінні ssh - цільовий хост і порт відповідно.


спасибі це працює, але як я можу зробити зворотний від сервера до дому?
alvas

Так само, просто поміняйте SERVERUSER@SERVER:remotefile і localfile, люблю: scp -P SERVERPORT -o 'ProxyCommand ssh -p WORKPORT WORKUSER@WORK nc %h %p 2>/dev/null' SERVERUSER@SERVER:remotefile localfile
go1dshtein

Я отримую ssh_exchange_identification: Connection closed by remote host при передачі з HOME в SERVER = (
alvas

ah помилки помилки, зараз це працює, woohoo !! завдяки мільйонів!!!!
alvas

0

Можна спробувати щось подібне:

cat localfile | ssh <WORKusername>@<WORK> "ssh -p23456 <SERVERusername>@localhost 'cat > remotefile'"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.