টি এল; ডিআর
জিনিসগুলি কেবল তখনই আরও জটিল হয়ে যায় যখন আপনার একটি বেসিক সার্ভার ব্যবহার করা আবশ্যক।
আপনি পছন্দ করতে ssh
আদেশ হিসাবে পাস করতে 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"
সিউডো-টার্মিনালগুলি থেকে সাবধান থাকুন
নোট করুন যে এখানে মূল তাত্পর্যপূর্ণ বিন্দুটি হ'ল ssh
বেশিরভাগ সরঞ্জামের মতো, কেবলমাত্র ট্রিট করে stdout
এবং stdin
ডিফল্টরূপে সঠিক।
যাইহোক, আপনি যখন বিকল্পটি দেখতে শুরু করেন Disable pseudo-terminal allocation.
এবং Force pseudo-terminal allocation.
আপনার কিছুটা ট্রায়াল এবং ত্রুটি করতে হতে পারে। তবে, একটি সাধারণ নিয়ম হিসাবে আপনি tty
যদি কোনও টার্মিনাল এমুলেটরে (কোনও মানবিক ধরণের কী রয়েছে) গার্ডড / বাইনারি জাঙ্কটি ঠিক করার চেষ্টা না করেন তবে আপনি আচরণ পরিবর্তন করতে চান না ।
উদাহরণস্বরূপ, আমার ব্যবহারের প্রবণতা -At
যাতে আমার ওয়ার্কস্টেশনের এসএসএল-এজেন্ট এগিয়ে যায় এবং যাতে টিমাক্স দূরবর্তীভাবে চালানো বাইনারি বাধা না দেয় (যেমন ssh -At bastion.internal tmux -L bruno attach
)। এবং, ডকারের জন্যও (এর মতো sudo docker exec -it jenkins bash
)।
যাইহোক, -t
আমি যখন এই জাতীয় কিছু করার চেষ্টা করি তখন এই দুটি পতাকা ডেটা দুর্নীতির উপর নজর রাখতে কিছুটা শক্ত করে তোলে:
# 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.