Çoğu durumda, sadece bir komut dosyasından bir çeşit SSH komutu çalıştırdığınızda, kafa karıştırıcı bir "sözde terminal tahsis edilmeyecektir çünkü stdin bir terminal değildir" hatası alırsınız. Aynı komutu komut satırından çalıştırıyorsanız, o zaman mükemmel bir şekilde çalışabilir.
Daha ileri gitmeden önce, genel anahtarınızı SSH aracısına eklediğinizden emin olun ve ardından ssh kullanmayı tekrar deneyin. Bir anahtarı kaçırmış olabilirsin. Öte yandan, bu işe yaramazsa, komut dosyanızda küçük bir sorun giderme yapmanız gerekecektir.
Yöntem 1: Sahte Tahsisatı Zorlama ve Devre Dışı Bırakma
Sorunu sizin için hızlı bir şekilde çözebilecek bir çift komut satırı seçeneği var. Sözde terminal tahsisini zorlamak için ssh -t -t -R'yi ve ardından bağlanmaya çalıştığınız şeyin geri kalanını deneyin. Örneğin, example.com'da hesabınıza giriş yapmak için ssh -p 80 [email protected]'u kullanacağınızı varsayalım, bu elbette var olmayan belgeler için bir kukla.
Örneğin ssh -t -t -R -p 80 [email protected] çalıştırmayı deneyin ve bunun sorunu çözüp çözmediğine bakın. Sisteme başarılı bir şekilde giriş yapabilmek için adı elbette gerçek hesabınız ve ana bilgisayar adınızla değiştirmeniz gerekecektir. Bu, bir uçbirimin tahsisini zorlar, bu nedenle sözde uçbirimin ayrılmayacağını görmemelisiniz çünkü stdin bir uçbirim hatası değildir.
Öte yandan, sabit bir hata mesajı dizisi ile karşılaşabilirsiniz. Bazı kullanıcılar bunun eğlenceli olarak değerlendirilebileceğini belirtti.
Ne olursa olsun kesinlikle sinir bozucu, bu yüzden işlemi sonlandırmak için Ctrl + C kullanın.
Yalnızca bir -t anahtarını kullanmayı veya sayıyı artırmayı deneyebilirsiniz. Bu işe yaramazsa, komuttaki herhangi bir -t anahtarını bir -T anahtarıyla değiştirin, örneğin ssh -T -R -p 80 [email protected] ve bunun çalışıp çalışmadığını görün.
Bu yöntem, tüm sözde uçbirim ayırma sürecini tamamen devre dışı bırakır, bu nedenle zorlamanın olmadığı durumlarda işe yarayabilir. Tabii ki, bunların hiçbiri komut satırından bir sorun olmamalıdır, ancak komut dosyanızda hangi seçeneğin çalıştığını bulduğunuzda bir not aldığınızdan emin olun, böylece söz konusu sunucuya erişmek için çalıştırmanız gereken gelecekteki komut dosyalarında onu kullanabilirsiniz.
Ssh komutu bu iki zıt seçeneğe benzer isimler verdiğinden, -T'nin sözde terminallerin tahsisini zorlarken -T'nin devre dışı bıraktığını unutmayın. Bu seçenekler büyük / küçük harfe duyarlıdır ve genellikle betiklerin içinden gereklidir çünkü ssh'ın çalışması için geleneksel bir TTY terminali gerekir. Doğal olarak, sizin durumunuzda bu amaç için terminal emülatörünüzü kullanıyor olacaksınız.
Yöntem 2: sshpass'ı kullanma
Bazı kişiler, varsayılan olarak dahil edilmeyen sshpass komutuyla komut dosyalarının daha iyi çalıştığını görebilir. Denemeyi tercih ederseniz veya özel kullanım durumunuz için ihtiyacınız olduğu için her zaman sudo apt-get install sshpass veya sudo yum install sshpass ile yükleyebilirsiniz.
Zaten kullanmıyorsanız, muhtemelen ihtiyacınız yoktur. Yine de, bu tür bir ortamda sözde terminal tahsisi ile ilgili hata mesajlarını şaşırtmak için aynı teknikleri kullanabilirsiniz.
Örneğin, sistemi betiğinizin içinden çalışmaya zorlamak için sshpass -p şifre ssh -T [email protected] kullanın.
Yöntem 3: İş Yönetimi Hatalarını Düzeltme
Bazen, tüm bunları düzelttikten sonra bile başka bir hata mesajı alabilirsiniz. Tty'ye erişim olmadığını belirten bir uyarı alıyorsanız ve kabuğunuzda iş kontrolü olmadığı size hatırlatılırsa, bir şekilde normal çalışmanız gerekir.
Bu hata, uzak sunucuda csh, tcsh veya hatta Almquist veya başka bir kabukla ilgili düzensiz bir şeyden kaynaklanır. Başka hata mesajları aldığınız için fark etmemiş olabilirsiniz, ancak sözde terminaller hakkında başkalarını görmüyorsanız, normalde yaptığınız gibi nispeten devam etmeniz mümkün olmalıdır.
Bu durumda işlemleri durdurmak için Ctrl + Z'yi kullanmayı denemek istemeyebilirsiniz, çünkü bunların tekrar başlatılmasının bir yolu olmayabilir. Çıktığınızda durdurulmuş işler olduğunu belirten bir hata mesajı alıyorsanız, çıkış yapmanıza izin verilmez.
İşlem sırasında işinizi kaybetmediğinizi varsayarak, kapatamadığınız işleri kapatmak için ps ve kill komutlarını kullanın. Şimdi çıkabileceksiniz.Etiketler Linux nasıl yapılır ssh