বেশিরভাগ কেসে আপনি "pseudo-terminal will not be allocated because stdin is not a terminal" এরর পাবেন শুধু যখন আপনি কোনো SSH কমান্ড স্ক্রিপ্ট থেকে রান করেন। যদি একই কমান্ড কমান্ড লাইন থেকে রান করেন তবে সেটা পারফেক্টলি কাজ করতে পারে।
আরও কিছু করার আগে নিশ্চিত করুন আপনার পাবলিক কী SSH এজেন্টে অ্যাড করা আছে এবং আবার ssh ট্রাই করুন। হয়তো আপনি শুধু একটি কী মিস করছিলেন। অন্যদিকে, এটি কাজ না করলে আপনার স্ক্রিপ্টে কিছু ট্রাবলশুটিং করতে হবে।
মেথড ১: Pseudo-tty অ্যালোকেশন ফোর্স ও ডিসেবল করা
এক জোড়া কমান্ড লাইন অপশন আছে যা কুইকলি সমস্যা ফিক্স করতে পারে। ssh -t -t -R ট্রাই করুন বাকি যা কানেক্ট করতে চেছিলেন সেটার সাথে যাতে pseudo-terminal allocation ফোর্স হয়। উদাহরণস্বরূপ, আপনি ssh -p 80 appuals@ssh.example.com ব্যবহার করতে চেয়েছিলেন example.com-এ আপনার অ্যাকাউন্টে লগইন করার জন্য (example.com ডকুমেন্টেশনের জন্য ডামি)।
ssh -t -t -R -p 80 appuals@ssh.example.com রান করে দেখুন এটি ফিক্স করে কিনা। আপনাকে অবশ্যই আপনার একচুআল অ্যাকাউন্ট এবং হোস্টনেম দিতে হবে সফলভাবে লগইন করার জন্য। এটি টার্মিনাল অ্যালোকেশন ফোর্স করে, তাই আপনার pseudo-terminal এরর দেখা উচিত নয়।
অন্যদিকে, আপনি কনস্ট্যান্ট এরর মেসেজ স্ট্রিং পেতে পারেন। কিছু ইউজার মন্তব্য করেছেন এটা অমিউজিং লাগতে পারে।
অবশ্যই ফ্রাস্ট্রেটিং, তাই Ctrl+C চাপে প্রসেস কিল করুন।

আপনি শুধু একটা -t স্যুইচ বা সংখ্যা বাড়িয়ে ট্রাই করতে পারেন। এটি কাজ না করলে যেকোনো -t স্যুইচকে -T স্যুইচ দিয়ে রিপ্লেস করুন, যেমন: ssh -T -R -p 80 appuals@ssh.example.com এবং দেখুন কাজ করে কিনা।
এই মেথড পুরো pseudo-terminal allocation প্রসেস ডিসেবল করে দেয়, তাই যেসব কেসে ফোর্স করা কাজ না করে সেখানে এটি কাজ করতে পারে। অবশ্যই কমান্ড লাইন থেকে এটি কোনো সমস্যা নয়, কিন্তু আপনি যখন স্ক্রিপ্ট থেকে রান করবেন তখন কোন অপশন কাজ করেছে সেটা নোট করুন ভবিষ্যতে ওই সার্ভার অ্যাক্সেস করার স্ক্রিপ্টে ব্যবহার করার জন্য।
ssh কমান্ড এই দুটি বিপরীত অপশনকে সিমিলার নাম দিয়েছে, মনে রাখুন -t pseudo-terminals অ্যালোকেশন ফোর্স করে যখন -T ডিসেবল করে। এই অপশনগুলো কেস-সেনসিটিভ, এবং স্ক্রিপ্টের ভেতর থেকে এগুলো প্রায়শই নিশ্চিত করতে হয় কারণ ssh একটি ট্রেডিশনাল TTY টার্মিনাল চায় কাজ করার জন্য। আপনার কেসে আপনি আপনার টার্মিনাল এমুলেটর ব্যবহার করবেন।
মেথড ২: sshpass ব্যবহার করা
কিছু লোকের স্ক্রিপ্ট sshpass কমান্ড দিয়ে ভালো কাজ করতে পারে, যা ডিফল্টভাবে ইনক্লুডেড নয়। আপনি sudo apt-get install sshpass বা sudo yum install sshpass দিয়ে ইনস্টল করতে পারেন যদি ট্রাই করতে চান বা আপনার স্পেসিফিক ইউজ কেসের জন্য দরকার হয়।
আপনি যদি ইতিমধ্যে এটি ব্যবহার না করেন তবে আপনাকে এটা দরকার নেই। কিন্তু আপনি একই টেকনিক ব্যবহার করে pseudo-terminal allocation রিলেটেড এরর মেসেজ এই ধরনের এনভায়রনমেন্টে হ্যান্ডেল করতে পারেন।
উদাহরণস্বরূপ, sshpass -p password ssh -T appuals@ssh.example.com ব্যবহার করে আপনার স্ক্রিপ্টের ভেতর থেকে সিস্টেমকে ফোর্স করে কাজ করতে পারেন।
মেথড ৩: জব ম্যানেজমেন্ট এরর ফিক্স করা
কখনো কখনো উপরের সব ফিক্স করার পরও আরেকটি এরর মেসেজ আসতে পারে। যদি আপনি একটি ওয়ার্নিং পান যেটি বলে no access to tty এবং তারপর আপনাকে মনে করানো হয় আপনার শেলে জব কন্ট্রোল নেই, তবে আপনি কিছুটা নরমালি কাজ করতে পারবেন।
এই এরর রিমোট সার্ভারে কিছু ইরেগুলারিটির কারণে হয় যেটি csh, tcsh বা সম্ভবত Almquist বা অন্য শেল রিলেটেড। আপনি লক্ষ্য করতে পারেননি কারণ অন্যান্য এরর মেসেজ আসছিল, কিন্তু যদি pseudo-terminals রিলেটেড আর কোনো এরর না থাকে তবে আপনি রিলেটিভলি নরমালি কন্টিনিউ করতে পারবেন।
এই কেসে Ctrl+Z ব্যবহার করে প্রসেস স্টপ করার চেষ্টা করবেন না, কারণ সেটা আবার স্টার্ট করার উপায় নাও থাকতে পারে। আপনি যদি there are stopped jobs এরর মেসেজ পান এক্সিট করার সময়, তবে আপনাকে লগআউট করতে দিবে না।

ps এবং kill কমান্ড ব্যবহার করে যেসব জব আপনি শাট ডাউন করতে পারছেন না সেগুলো বন্ধ করুন (ওয়ার্ক লস হলে সমস্যা নেই)। তারপর আপনি এক্সিট করতে পারবেন।