TL; DR
İşler yalnızca , kullanılması gereken bir bastion sunucunuz olduğunda biraz daha karmaşıklaşır .
Beğenmek sshiçin komut olarak geçebilirsiniz ssh:
cat local_script.sh | ssh -A usera@bastion ssh -A userb@privateserver "cat > remote_copy_of_local_script.sh; bash remote_copy_of_local_script.sh"
Sahte terminallere dikkat edin
Buradaki sshen önemli hususun, çoğu araç gibi, yalnızca varsayılan olarak davrandığı stdoutve stdindüzeltildiğini unutmayın.
Ancak, gibi seçeneği görmeye başladığınızda Disable pseudo-terminal allocation.ve Force pseudo-terminal allocation.biraz deneme yanılma yapmanız gerekebilir. Ancak, genel bir kural olarak, ttyterminal emülatöründeki (ne tür bir insan türü) bozuk / ikili hurdalığı düzeltmeye çalışmadığınız sürece davranışınızı değiştirmek istemezsiniz .
Örneğin, -Atiş istasyonumun ssh-agent'ının yönlendirilmesi ve tmux'un uzaktan çalıştırılmasının ikilik demiri yapmaması için kullanma eğilimindeyim ssh -At bastion.internal tmux -L bruno attach. Ve, liman işçisi için de (öyle sudo docker exec -it jenkins bash).
Ancak, bu iki -tbayrak, bunun gibi bir şey yapmaya çalıştığımda, veri bozulmalarını tespit etmekte zorlanıyor:
# copy /etc/init from jenkins to /tmp/init in testjenkins running as a container
ssh -A bastion.internal \
ssh -A jenkins.internal \
sudo tar cf - -C /etc init | \
sudo docker exec -i testjenkins \
bash -c 'tar xvf - -C /tmp'
# note trailing slashes to make this oneliner more readable.