Grawity'nin ProxyCommand cevabı benim için işe yaradı, ancak SSH'ye daha az aşina olduğum için biraz deneme aldı. Kendim gibi SSH'ye yeni başlayan herhangi bir yeniliğe yardımcı olmak için Grawity'nin cevabını daha fazla ayrıntı ile araştıracağımı düşündüm. Daha açık gösterim için tanımlar:
Makine A: üzerinde bulunduğunuz makine
Sunucu B: userB@ip.address.for.B (atlama sunucusu veya orta sunucu)
Sunucu C: userC@ip.address.for.C (kopyalamak istediğiniz uzak sunucu)
ProxyCommnad
A$ scp -oProxyCommand="ssh -W %h:%p userB@ip.address.for.B" thefile userC@ip.address.for.C:destination
Beton Örneği
Bu nedenle somut bir örnek için, (Server C) 0.0.1.2
adlı bir kullanıcı hesabı olan IP'li bir sunucuya erişiminiz olduğunu söyleyin bar
. Ancak, bunu elde etmek için önce 0.0.1.1
kullanıcı hesabı foo
(Sunucu B) olan IP'li bir sunucuya giriş yapmanız gerekir . Şimdi dosyayı kopyalamak istediğiniz baz.txt
sunucu için geçerli makine (Makine A) üzerinde bulunan 0.0.1.2
'ın /home/bar/
dizininde. Bu örnek için yukarıdaki ProxyCommand'ı kullanmak için , aşağıdakileri uygularsınız :
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" baz.txt bar@0.0.1.2:/home/bar/
Dosyanın ve hedefin sırasını değiştirerek bir dosyayı Sunucu C'den kolayca kopyalayabilirsiniz. Yani, örneğin, eğer baz.txt
sunucu üzerinde zaten 0.0.1.2
bulunan /home/bar/
o zaman kullanarak makinenize kopyalamak olabilir:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" bar@0.0.1.2:/home/bar/baz.txt /destination/path/on/A
Umarım bu, başkalarına göre biraz daha fazla şey ifade eden şeylere ihtiyaç duyan insanlara yardımcı olur.
A$ rsync <options> -e 'ssh B ssh' source C:destination