Cách sử dụng cài đặt `~ / .ssh / config` cho mỗi máy chủ bằng` rsync`


14

Tôi hiện đang sử dụng rsync với -e 'ssh -p 10022'tùy chọn để chỉ định cổng.

Tôi đã thiết lập ssh trong ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

Tôi có thể sử dụng cấu hình này từ rsync dễ dàng không? Hoặc tôi có thể tạo ~/.rsyncvà đặt một cổng mặc định cho máy chủ chỉ định không?

Câu trả lời:


22

Chỉ định "myvps"làm tên máy chủ.

rsync /var/bar myvps:/home/foo ...

làm rsync từ thư mục nhà người dùng nơi cấu hình ssh được giữ, làm việc cho tôi, thậm chí nó hỗ trợ nút hy vọng.
Stalin Gino

8

Điều này đã không làm việc cho tôi. Tôi có nhảy hosting trong ~ / .ssh / config của tôi

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: Không thể giải quyết tên máy chủ vm-app01 : tên nút cũng như tên dịch vụ được cung cấp hoặc không biết rsync: kết nối bị đóng đột ngột (0 byte nhận được cho đến nay) 42 / rsync / io.c (452) [người gửi = 2.6.9]

Tuy nhiên, điều này chỉ hoạt động tốt

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

Chỉnh sửa, tôi đã có thể vượt qua độ phân giải tên bằng cách buộc rsync ssh tải tệp cấu hình với -F sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config"

Điều này vượt qua một lỗi nhưng vào một lỗi khác. Quyền bị từ chối (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: Kết nối được đóng bởi máy chủ từ xa

Cũng đã thử cài đặt rõ ràng -i và người dùng @ trong kết nối nhưng xảy ra lỗi tương tự.

BIÊN TẬP

Một điểm dữ liệu khác. Nếu tôi sử dụng ip nổi của p Pivot vm (máy chủ nhảy) thay vì tên của nó thì vm-p Pivot rsync hoạt động. Nhưng rõ ràng việc hủy tất cả ssh / config của tôi trong -e "ssh" không hoạt động. Chi tiết: mac cục bộ, được nâng cấp lên rsync 3.1.0, centync 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]

Những công việc này

[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

Tôi nhận ra rằng trong trường hợp của mình, tôi không thể sử dụng phím tắt, nhưng tên máy chủ đầy đủ thực tế có thể được sử dụng
bảnh bao vào

1

@darKoram. Đối với trường hợp bạn gọi ssh với đường dẫn không chuẩn và thử sử dụng ssh trong ProxyCommand, đó là vấn đề vì không có sự kế thừa. Bạn có hai tùy chọn ở đó: trực tiếp cung cấp cùng một tệp trong lệnh bên trong hoặc tự động hack nó. Bạn có thể xem mô tả chi tiết trong bài đăng trên blog của tôi về điều đó: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

Một thời gian ngắn trong tình huống của bạn sẽ giúp cấu hình như:

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

0

@darKoram. Chạy quy trình SSH với sudo:

sudo / usr / local / bin / rsync -az -e "sudo -u user ssh" /var/data/source/data.tar.gz vm-app01: / home / user


-1

@darKoram

Tên DNS đầy đủ của "vm-app01" là gì? Nó phải được công khai, vì bạn tuyên bố rằng bạn có thể tiếp cận nó trong ssh mà không cần rsync. Nhưng, bạn mong đợi ssh sẽ bắt máy chủ của bạn thông qua mẫu "21ct-dev1- *". Tôi thực sự không thể thấy làm thế nào điều này có thể làm việc theo bất kỳ cách nào. Nếu bạn cố gắng tạo mẫu tên máy chủ, nó sẽ trông giống như thế này:

Host *.21ct-dev1-domain.tld

Sau đó, cuộc gọi của rsync sẽ trông giống như thế này:

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

"Vm-app01" được giải quyết như thế nào? Máy chủ lưu trữ tập tin, thắng, nis, nss? Bạn có bí danh không? Bạn có trong một miền? Nó chắc chắn trông giống như một vấn đề DNS "đơn giản".

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.