টি এল; ডিআর
জিনিসগুলি কেবল তখনই আরও জটিল হয়ে যায় যখন আপনার একটি বেসিক সার্ভার ব্যবহার করা আবশ্যক।
আপনি পছন্দ করতে 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.