Как использовать '~/.ssh/config' устанавливающий для каждого сервера 'rsync'

Вы, вероятно, неправильно читали обратные галочки как одинарные кавычки в строке:

sum = 'expr $num1 + $num2'

Посмотрите Wiki Greg на использовании $(...) вместо этого.

Это работает как ожидалось:

sum=$(expr "$num1" + "$num2")

Также примечание там не является никакими разрывами вокруг, равняется знаку (переменное присвоение).

14
11.10.2013, 00:05
5 ответов

Указать "myvps" как имя хоста.

rsync /var/bar myvps:/home/foo ...
22
27.01.2020, 19:50

У меня это не сработало. У меня прыгающий хостинг в моем ~ / .ssh / config

Host 10.x.y.z
    User cloud-user
    HostName vm-pivot
    IdentityFile /path_to_vm_key

Host 21ct-dev1-*
    User cloud-user
    HostName %h.example.com
    ProxyCommand ssh 10.x.y.z -W %h:%p
    IdentityFile /path_to_vm_key


rsync -e "ssh" local_path vm-app01:/remote_path

ssh: Не удалось разрешить имя хоста vm-app01 : указано имя узла или имя сервера или неизвестно rsync: соединение неожиданно закрыто ( Пока получено 0 байт) [отправитель] ошибка rsync: необъяснимая ошибка (код 255) в /SourceCache/rsync/rsync-42/rsync/io.c(452) [sender = 2.6.9]

Однако это работает нормально

[kbroughton@kbroughton:project + (develop)] ssh vm-app01
Last login: Thu Apr 17 12:10:37 2014 from 10.a.b.c

Редактировать, мне удалось обойти разрешение имен, заставив rsync ssh загрузить файл конфигурации с помощью -F sudo rsync -az -e "ssh -F / Users / kbroughton /.ssh / config "

При этом одна ошибка переходит в другую. В доступе отказано (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: соединение закрыто удаленным хостом

Также попытался явно установить -i и user @ в соединении, но возникла та же ошибка.

EDIT

Другая точка данных. Если я использую плавающий IP-адрес pivot vm (хост перехода) вместо его имени vm- pivot rsync работает. Но явный сброс всех моих ssh / config в -e "ssh" не работает. Подробности: локальный Mac, обновленный до rsync 3.1.0, удаленный centos rsync 3.0.9.

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@vm-pivot:/home/user

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@10.x.y.z:/home/user
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.1.0]

Это работает

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key"  /var/data/sources/data.tar.gz user@10.x.y.z:/home/user
8
27.01.2020, 19:50

@darKoram. В случаях, когда вы вызываете ssh с нестандартным путем и пытаетесь использовать ssh в ProxyCommand, это проблема, потому что нет наследования. У вас есть два варианта: напрямую предоставить тот же файл во внутренней команде или динамически взломать его. Вы можете посмотреть подробное описание этого в моем сообщении в блоге: http://hubbitus.info/wiki/Blog : Ssh_forwarding_with_same_config_file_hack

Вскоре в вашей ситуации должна помочь конфигурация, например:

Host 21ct-dev1-*
  User cloud-user
  HostName %h.example.com
  ProxyCommand ssh $( egrep -z -A1 '^-F$' /proc/$PPID/cmdline ) 10.x.y.z -W %h:%p
  IdentityFile /path_to_vm_key
1
27.01.2020, 19:50

@darKoram. Ejecute el proceso SSH con sudo:

sudo /usr/local/bin/rsync -az -e "sudo -u usuario ssh" /var/data/sources/data.tar.gz vm -app01 :/ hogar/usuario

0
27.01.2020, 19:50

@darKoram

Какое полное DNS-имя "vm -app01"? Он должен быть общедоступным, поскольку вы утверждаете, что можете получить к нему доступ через ssh без rsync. Но вы ожидаете, что ssh поймает ваш хост по шаблону «21ct -dev1 -*». Я действительно не понимаю, как это может работать в любом случае. Если вы попытаетесь создать шаблон имен хостов, это должно выглядеть примерно так:

Host *.21ct-dev1-domain.tld

Тогда вызов rsync должен выглядеть примерно так:

rsync -e "ssh" /local/path/ vm-app01.21ct-dev1-domain.tld:/remote/path/

Как разрешается «vm -app01»? Файл hosts, wins, nis, nss? У вас есть псевдоним? Вы находитесь в домене? Это, безусловно, похоже на «простую» проблему DNS.

-1
27.01.2020, 19:50

Теги

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