
У меня три компьютера: ДОМАШНИЙ, РАБОЧИЙ и СЕРВЕР. Я подключен из ДОМАШНЕГО на СЕРВЕР с помощью:
ssh -t <WORKusername>@<WORK> ssh -p23456 <SERVERusername>@localhost
Мне нужноперенести файл с ДОМА на СЕРВЕР но я не могу оставить файл вРАБОТА
Также мне нужно было быперенести файл с СЕРВЕРА на ДОМОЙпосле обработки, как мне это сделать?
Я взглянул наhttps://serverfault.com/questions/37629/how-do-i-do-multihop-scp-transfersиscp между двумя удаленными хостами с моего (третьего) ПКно я не могу изменить конфигурацию ssh наДОМмашина
Я пробовал это, но ничего не вышло:
$ 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
Я также попробовал следующее, но это обратный процесс передачи файла с СЕРВЕРА на ДОМОЙ:
ssh -t <WORKusername>@<WORK> "ssh -p 23456 <SERVERusername>@localhost \"cat file.zip\""
Я также пробовал tar, но это не сработало:
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 из ДОМАШНЕГО каталога, чтобы перенести файл на СЕРВЕР?
А также с СЕРВЕРА на ДОМ?
решение1
Попробуйте использовать это:
scp -P SERVERPORT -o 'ProxyCommand ssh -p WORKPORT WORKUSER@WORK nc %h %p 2>/dev/null' localfile SERVERUSER@SERVER:remotefile
ProxyCommand
создайте прокси на хосте WORK, который подключен к SERVER:SERVERPORT (см.нк).
%h
и %p
являются переменными ssh — целевой хост и порт соответственно.
решение2
Вы можете попробовать что-то вроде:
cat localfile | ssh <WORKusername>@<WORK> "ssh -p23456 <SERVERusername>@localhost 'cat > remotefile'"