scp с использованием ssh-туннелирования

Вы можете использовать это вместо этого, и она будет работать

echo "$target" | sudo tee --append /etc/udev/rules.d/test.txt

tee команда с - append (вкратце -a ) опция добавляет отображаемую строку в указанный файл, ничего не перезаписывается. tee также записывает в STDOUT , который при желании может быть перенаправлен на / dev / null

Другой способ сделать это -

sudo bash -c 'echo "$target" > /etc/udev/rules.d/test.txt'

, но я рекомендую придерживаясь первого примера, потому что echo "$ target" будет запущен без прав суперпользователя

2
15.06.2017, 11:40
4 ответа

Вы можете очень просто настроить ProxyCommand/ProxyJump, чтобы вы могли scp напрямую подключаться к удаленному серверу. Создайте ~/.ssh/config со следующим:

Host server1
  ProxyCommand ssh -W %h:%p server2

и тогда вы сможете выполнять scp напрямую:

scp local.file server1:/path/to/remote.file

Если вы действительно настаиваете на переадресации портов, то после создания «туннеля» с помощью первая введенная вами команда:

ssh -L 8888:server1:22 server2

вам нужно будет передать данные следующим образом (где -P указывает порт, на котором установлено перенаправленное соединение):

scp -P 8888 local.file server1:/path/to/remote.file
5
27.01.2020, 22:18

scpподдерживает удаленный исходный файл, а также удаленный файл назначения. Он использует ssh для передачи данных, так что это должно быть эквивалентно вашим попыткам туннелирования:

scp file myuser@server2:~/
scp myuser@server2:~/file myuser@server1:~/

Кстати, если myuserсовпадает с вашим локальным логином, его можно не указывать:

scp file server2:~/
scp server2:~/file server1:~/

Если вам действительно нужен туннель (, чтобы файл никогда не касался файловой системы server2), тогда на этот вопрос хорошо дан ответ здесь:https://superuser.com/questions/276533/scp-files-via-intermediate-host

На самом деле так хорошо, что можно считать, что на этот вопрос уже дан ответ...

2
27.01.2020, 22:18

Поместите следующее в ~/.ssh/config хост-сервера

XAuthLocation /opt/X11/bin/xauth

Host remote
  User foo
  Hostname remote-server
  ProxyCommand ssh foo@gateway-server -W remote-server:22

затем scp как

scp remote:~/file_to_be_copied. 
0
23.07.2020, 01:45

Я нахожу это очень удобным:

scp -J myuser@server2 file myuser@server1:~/

Кроме того, если вы сохраняете одинаковые имена пользователей на своем ноутбуке и на каждом из серверов, вы можете просто не указывать имя пользователя. Если хотите, вы также можете поместить server2 в свой файл hosts (/etc/hosts )с красивым и коротким именем для более быстрого ввода:

# in file /etc/hosts 
74.125.71.113 s2  # this is server2

Тогда команда для передачи fileна server1 будет:

scp -J s2 file server1:~/
2
07.10.2021, 13:50

Теги

Похожие вопросы