Fix: Pseudo-terminal tidak akan dialokasikan karena stdin bukan terminal

Dalam kebanyakan kasus, Anda akan menerima kesalahan "pseudo-terminal tidak akan dialokasikan karena stdin bukanlah terminal" kesalahan hanya ketika Anda menjalankan semacam perintah SSH dari skrip. Jika Anda menjalankan perintah yang sama dari baris perintah, maka itu mungkin berfungsi dengan baik.

Sebelum melangkah lebih jauh, pastikan Anda telah menambahkan kunci publik Anda ke agen SSH dan kemudian coba gunakan ssh lagi. Anda mungkin baru saja kehilangan kunci. Di sisi lain, jika ini tidak berhasil maka Anda harus melakukan sedikit pemecahan masalah dalam skrip Anda.

Metode 1: Memaksakan & Menonaktifkan Alokasi pseudo-tty

Ada sepasang opsi baris perintah yang mungkin memperbaiki masalah dengan cepat untuk Anda. Coba ssh -t -t -R diikuti oleh apa yang Anda coba sambungkan untuk memaksa alokasi pseudo-terminal. Misalnya, Anda akan menggunakan ssh -p 80 [email protected] untuk masuk ke akun Anda di example.com, yang tentu saja merupakan tiruan untuk dokumentasi yang tidak ada.

Coba jalankan misalnya ssh -t -t -R -p 80 [email protected] dan lihat apakah ini memperbaiki masalah. Anda tentu saja harus mengganti nama dengan akun dan nama host Anda yang sebenarnya agar berhasil masuk ke sistem. Ini memaksa alokasi terminal, jadi Anda seharusnya tidak melihat pseudo-terminal tidak akan dialokasikan karena stdin bukanlah kesalahan terminal.

Di sisi lain, Anda mungkin hanya akan mendapatkan serangkaian pesan kesalahan yang konstan. Beberapa pengguna berkomentar bahwa ini bisa dianggap lucu.

Ini tentu membuat frustasi, jadi gunakan Ctrl + C untuk menghentikan proses.

Anda dapat mencoba menggunakan hanya satu tombol -t atau menambah angkanya. Jika ini tidak berhasil, maka ganti sakelar -t apa pun dengan sakelar -T pada perintah, misalnya ssh -T -R -p 80 [email protected] dan lihat apakah berfungsi.

Metode ini menonaktifkan seluruh proses alokasi pseudo-terminal sekaligus, jadi metode ini mungkin berfungsi jika tidak dipaksakan. Tentu saja, tidak satu pun dari ini yang menjadi masalah dari baris perintah, tetapi pastikan untuk membuat catatan ketika Anda menemukan opsi mana yang berfungsi dari skrip Anda sehingga Anda dapat menggunakannya di skrip di masa mendatang yang harus Anda jalankan untuk mengakses server tersebut.

Karena perintah ssh memberikan dua opsi berlawanan ini nama yang mirip, ingat bahwa -t memaksa alokasi pseudo-terminal sementara -T menonaktifkannya. Opsi ini peka huruf besar / kecil, dan sering kali diperlukan dari dalam skrip karena ssh memerlukan terminal TTY tradisional agar berfungsi. Biasanya, dalam kasus Anda, Anda akan menggunakan emulator terminal Anda untuk tujuan ini.

Metode 2: Menggunakan sshpass

Beberapa orang mungkin menemukan bahwa skrip mereka bekerja lebih baik dengan perintah sshpass, yang tidak disertakan secara default. Anda selalu dapat menginstalnya dengan sudo apt-get install sshpass atau sudo yum install sshpass jika Anda lebih suka mencobanya atau karena Anda memerlukannya untuk kasus penggunaan khusus Anda.

Jika Anda belum menggunakannya, Anda mungkin tidak membutuhkannya. Namun demikian, Anda dapat menggunakan teknik yang sama untuk mengejutkan pesan kesalahan yang terkait dengan alokasi pseudo-terminal di lingkungan semacam ini juga.

Misalnya, gunakan sshpass -p password ssh -T [email protected] untuk memaksa sistem bekerja dari dalam skrip Anda.

Metode 3: Memperbaiki Kesalahan Manajemen Pekerjaan

Terkadang Anda mungkin mendapatkan satu pesan kesalahan lain bahkan setelah memperbaiki semua ini. Jika Anda menerima peringatan bahwa tidak ada akses ke tty dan kemudian Anda diingatkan bahwa tidak ada kontrol pekerjaan di shell Anda, Anda seharusnya dapat bekerja secara normal.

Kesalahan ini disebabkan oleh sesuatu yang tidak teratur pada server jarak jauh yang terkait dengan csh, tcsh atau bahkan mungkin Almquist atau shell lainnya. Anda mungkin tidak menyadarinya karena Anda mendapatkan pesan kesalahan lain, tetapi asalkan Anda tidak melihat yang lain tentang pseudo-terminal, Anda dapat melanjutkannya secara relatif seperti yang biasanya Anda lakukan.

Anda mungkin tidak ingin mencoba menggunakan Ctrl + Z dalam hal ini untuk menghentikan proses, karena mungkin tidak ada cara untuk memulainya kembali. Jika Anda mendapatkan pesan kesalahan yang berbunyi ada pekerjaan yang dihentikan saat Anda keluar, maka Anda tidak akan diizinkan untuk keluar.

Gunakan perintah ps dan kill untuk menutup semua pekerjaan yang tidak dapat Anda tutup, dengan asumsi Anda tidak keberatan kehilangan pekerjaan dalam prosesnya. Anda akan bisa keluar sekarang.

Memberi tag petunjuk cara Linux ssh