TL; DR
İşler yalnızca , kullanılması gereken bir bastion sunucunuz olduğunda biraz daha karmaşıklaşır .
Beğenmek ssh
iç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 ssh
en önemli hususun, çoğu araç gibi, yalnızca varsayılan olarak davrandığı stdout
ve stdin
dü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, tty
terminal 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, -At
iş 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 -t
bayrak, 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.