Betulkan: Pseudo-terminal tidak akan diperuntukkan kerana stdin bukan terminal



Cuba Instrumen Kami Untuk Menghapuskan Masalah

Dalam kebanyakan kes, anda akan menerima kesalahan 'pseudo-terminal tidak akan dialokasikan kerana stdin bukan terminal' yang membingungkan hanya apabila anda menjalankan semacam perintah SSH dari skrip. Sekiranya anda menjalankan perintah yang sama dari baris perintah, maka ia mungkin berfungsi dengan baik.



Sebelum melangkah lebih jauh, pastikan anda telah menambahkan kunci awam anda ke ejen SSH dan kemudian cuba gunakan ssh sekali lagi. Anda mungkin baru sahaja kehilangan kunci. Sebaliknya, jika ini tidak berfungsi, anda perlu melakukan sedikit penyelesaian masalah dalam skrip anda.



Kaedah 1: Memaksa & Melumpuhkan Peruntukan palsu

Terdapat sepasang pilihan baris perintah yang mungkin dapat menyelesaikan masalah dengan cepat untuk anda. Cuba ssh -t -t -R diikuti dengan yang lain yang anda cuba sambungkan untuk memaksa peruntukan terminal pseudo. Sebagai contoh, katakan anda akan menggunakan ssh -p 80 appuals@ssh.example.com untuk log masuk ke akaun anda di example.com, yang tentunya adalah boneka untuk dokumentasi yang tidak ada.



Cuba jalankan mis. ssh -t -t -R -p 80 appuals@ssh.example.com dan lihat apakah ini menyelesaikan masalah. Anda tentu perlu mengganti nama dengan akaun sebenar dan nama host anda untuk berjaya masuk ke sistem. Ini memaksa peruntukan terminal, jadi anda seharusnya tidak melihat terminal pseudo tidak akan dialokasikan kerana stdin bukan kesalahan terminal.

Sebaliknya, anda mungkin berakhir dengan rentetan mesej ralat yang berterusan. Beberapa pengguna menyatakan bahawa ini boleh dianggap lucu.

Ia pasti mengecewakan walaupun, jadi gunakan Ctrl + C untuk membunuh prosesnya.



terminal pseudo

Anda boleh mencuba hanya menggunakan suis satu-t atau menambah bilangannya. Sekiranya ini tidak berfungsi, ganti mana-mana suis dengan suis -T dalam arahan, mis. ssh -T -R -p 80 appuals@ssh.example.com dan lihat apakah itu berfungsi.

Kaedah ini melumpuhkan keseluruhan proses peruntukan terminal pseudo-terminal, jadi mungkin berfungsi dalam keadaan di mana memaksanya tidak. Sudah tentu, semua ini tidak menjadi masalah dari baris perintah, tetapi pastikan untuk membuat catatan apabila anda mengetahui pilihan mana yang berfungsi dari skrip anda sehingga anda dapat menggunakannya dalam skrip yang akan anda jalankan untuk mengakses pelayan tersebut.

Oleh kerana perintah ssh memberikan dua pilihan yang bertentangan dengan nama serupa, ingatlah bahawa -t memaksa peruntukan terminal pseudo sementara -T melumpuhkannya. Pilihan ini peka huruf besar kecil dan selalunya diperlukan dari dalam skrip kerana ssh memerlukan terminal TTY tradisional untuk berfungsi. Secara semula jadi, sekiranya anda menggunakan emulator terminal untuk tujuan ini.

Kaedah 2: Menggunakan sshpass

Sebilangan orang mungkin mendapati skrip mereka berfungsi lebih baik dengan perintah sshpass, yang tidak disertakan secara lalai. Anda selalu boleh memasangnya dengan sudo apt-get install sshpass atau sudo yum install sshpass jika anda lebih suka mencubanya atau kerana anda memerlukannya untuk kes penggunaan khusus anda.

Sekiranya anda belum menggunakannya, anda mungkin tidak memerlukannya. Walaupun begitu, anda boleh menggunakan teknik yang sama untuk mengejutkan mesej ralat yang berkaitan dengan peruntukan terminal semu dalam lingkungan seperti ini juga.

Sebagai contoh, gunakan kata laluan sshpass -p ssh -T appuals@ssh.example.com untuk memaksa sistem berfungsi dari dalam skrip anda.

Kaedah 3: Memperbaiki Kesalahan Pengurusan Pekerjaan

Kadang-kadang anda mungkin mendapat satu lagi mesej ralat walaupun setelah menyelesaikan semua ini. Sekiranya anda menerima amaran yang berbunyi tanpa akses ke tty dan anda diingatkan bahawa tidak ada kawalan pekerjaan di shell anda, anda seharusnya dapat bekerja dengan normal.

Kesalahan ini disebabkan oleh sesuatu yang tidak teratur pada pelayan jauh yang berkaitan dengan csh, tcsh atau mungkin juga Almquist atau shell lain. Anda mungkin tidak menyedarinya kerana anda menerima mesej ralat yang lain, tetapi dengan syarat anda tidak melihat orang lain mengenai terminal pseudo, anda boleh meneruskannya seperti yang biasa anda lakukan.

Anda mungkin tidak mahu mencuba menggunakan Ctrl + Z dalam hal ini untuk menghentikan proses, kerana mungkin tidak ada cara agar mereka mula membuat sandaran lagi. Sekiranya anda mendapat mesej ralat yang berbunyi ada pekerjaan berhenti ketika anda keluar, maka anda tidak akan dibenarkan keluar.

berhenti kerja

Gunakan perintah ps dan kill untuk menutup sebarang pekerjaan yang tidak dapat anda tutup, dengan andaian anda tidak keberatan kehilangan pekerjaan dalam prosesnya. Anda dapat keluar sekarang.

Teg Cara Linux ssh 3 minit membaca