Meskipun Anda dapat melakukan ini di dalam satu sesi ssh, agak sulit untuk menggabungkan menyalin file dengan menjalankan perintah.
Cara termudah untuk mengatasi tugas ini adalah menjalankan sesi SSH terpisah untuk tiga operasi:
rsync -a inputs/ machineB:inputs/
ssh machineB 'some command -i inputs -o outputs'
rsync -a machineB:outputs/ outputs/
Ini membutuhkan otentikasi ke mesinB tiga kali. Cara yang disarankan untuk menghindari otentikasi berkali-kali adalah dengan menggunakan fasilitas berbagi koneksi dalam versi modern OpenSSH: mulai koneksi master ke B sekali dan untuk semua, dan biarkan SSH secara otomatis membonceng ke koneksi master. Tambahkan ControlMaster auto
dan ControlPath
garis ke Anda~/.ssh/config
, kemudian mulai koneksi master di latar belakang, kemudian lakukan tugas Anda.
ssh -fN machineB # start a master connection in the background
# Subsequent connections will be slaves to the existing master connection
rsync -a inputs/ machineB:inputs/
ssh machineB 'some command -i inputs -o outputs'
rsync -a machineB:outputs/ outputs/
Daripada menggunakan scp atau rsync untuk menyalin file, mungkin lebih mudah untuk memasang sistem file jarak jauh di bawah SSHFS . Ngomong-ngomong, ini akan mengatur koneksi master (dengan anggapan Anda telah mengatur koneksi ~/.ssh/config
seperti yang ditunjukkan di atas).
mkdir /net/machineB
sshfs machineB: /net/machineB
cp -Rp inputs /net/machineB/
ssh machibeB 'some command -i inputs -o outputs'
cp -Rp /net/machineB/outputs .
cat file | ssh user@host 'cat > /destination/of/file; /path/to/script &>/dev/null; cat results' > /destination/of/results