এসএসএইচ পালানোর অক্ষর এবং বাইনারি ফাইল স্থানান্তর
একটি সুবিধা আছে যা অন্য উত্তর উল্লেখিত করা হয়েছে যে, যখন অপারেটিং একটি সিউডো-টার্মিনাল ছাড়া , SSH- র অক্ষর অব্যাহতি যেমন ~C
হয় সমর্থিত নয় ; প্রোগ্রামগুলি বাইনারি ফাইলগুলিতে এই সিকোয়েন্সগুলি থাকতে পারে তা স্থানান্তর করতে এটি নিরাপদ করে।
ধারণার প্রমাণ
সিউডো-টার্মিনাল ব্যবহার করে বাইনারি ফাইলটি অনুলিপি করুন:
$ ssh -t anthony@remote_host 'cat /usr/bin/free' > ~/free
Connection to remote_host closed.
সিউডো-টার্মিনাল ব্যবহার না করে একটি বাইনারি ফাইল অনুলিপি করুন:
$ ssh anthony@remote_host 'cat /usr/bin/free' > ~/free2
দুটি ফাইল এক নয়:
$ diff ~/free*
Binary files /home/anthony/free and /home/anthony/free2 differ
সিউডো-টার্মিনালের মাধ্যমে যা অনুলিপি করা হয়েছিল তা দূষিত:
$ chmod +x ~/free*
$ ./free
Segmentation fault
অন্যটি যখন না:
$ ./free2
total used free shared buffers cached
Mem: 2065496 1980876 84620 0 48264 1502444
-/+ buffers/cache: 430168 1635328
Swap: 4128760 112 4128648
এসএসএইচের মাধ্যমে ফাইল স্থানান্তর করা হচ্ছে
এই যেমন প্রোগ্রামের জন্য বিশেষভাবে গুরুত্বপূর্ণ scp
বা rsync
কোন ডেটা স্থানান্তরের জন্য, SSH ব্যবহার করুন। এসসিপি প্রোটোকল কীভাবে কাজ করে তার এই বিশদ বিবরণটি ব্যাখ্যা করে যে কীভাবে এসসিপি প্রোটোকল পাঠ্য প্রোটোকল বার্তা এবং বাইনারি ফাইল ডেটার মিশ্রণ ধারণ করে।
ওপেনএসএইচ আপনাকে নিজের থেকে রক্ষা করতে সহায়তা করে
এটি লক্ষণীয় যে -t
পতাকাটি ব্যবহৃত হলেও, ওপেনএসএসএইচ ssh
ক্লায়েন্ট একটি সিডো-টার্মিনাল বরাদ্দ করতে অস্বীকার করবে যদি এটি সনাক্ত করে যে এটির stdin
স্ট্রিমটি টার্মিনাল নয়:
$ echo testing | ssh -t anthony@remote_host 'echo $TERM'
Pseudo-terminal will not be allocated because stdin is not a terminal.
dumb
আপনি এখনও ওপেনএসএসএইচ ক্লায়েন্টকে সিউডো-টার্মিনাল বরাদ্দ করতে বাধ্য করতে পারেন -tt
:
$ echo testing | ssh -tt anthony@remote_host 'echo $TERM'
xterm
উভয় ক্ষেত্রেই, এটি (সংবেদনশীলভাবে) যত্ন করে না stdout
বা stderr
পুনঃনির্দেশিত হয়:
$ ssh -t anthony@remote_host 'echo $TERM' >| ssh_output
Connection to remote_host closed.