ในขณะที่คุณสามารถทำได้ภายในเซสชันเดียว ssh มันเป็นเรื่องยากเล็กน้อยที่จะรวมการคัดลอกไฟล์เข้ากับคำสั่งที่รันอยู่
วิธีที่ง่ายที่สุดในการจัดการงานนี้คือการเรียกใช้เซสชัน SSH แยกต่างหากสำหรับการดำเนินการทั้งสาม:
rsync -a inputs/ machineB:inputs/
ssh machineB 'some command -i inputs -o outputs'
rsync -a machineB:outputs/ outputs/
สิ่งนี้ต้องการการพิสูจน์ตัวตนกับเครื่อง B สามครั้ง วิธีที่แนะนำในการหลีกเลี่ยงการพิสูจน์ตัวตนหลายครั้งคือการใช้ตัวช่วยการเชื่อมต่อการเชื่อมต่อใน OpenSSH เวอร์ชั่นทันสมัย: เริ่มการเชื่อมต่อหลักไปที่ B ทุกครั้งและให้ SSH กลับมาที่การเชื่อมต่อหลักอัตโนมัติ เพิ่มControlMaster auto
และControlPath
บรรทัดให้กับคุณ~/.ssh/config
จากนั้นเริ่มการเชื่อมต่อหลักในพื้นหลังจากนั้นปฏิบัติงานของคุณ
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/
แทนที่จะใช้ SCP หรือ rsync เพื่อคัดลอกไฟล์มันอาจจะง่ายต่อการติดตั้งระบบแฟ้มระยะไกลภายใต้SSHFS วิธีนี้จะดูแลการตั้งค่าการเชื่อมต่อหลักโดยวิธีการ (สมมติว่าคุณได้ตั้งค่า~/.ssh/config
ตามที่ระบุไว้ด้านบน)
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