Saya mencoba untuk terhubung ke mesin satu dengan ssh dan kemudian terhubung ke mesin dua lainnya dengan ssh, tapi saya mendapatkan kesalahan ini.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Mengapa?
command-line
ssh
terminal
Jhonathan
sumber
sumber
ssh
!Jawaban:
Secara default, ketika Anda menjalankan perintah pada mesin jarak jauh menggunakan ssh, TTY tidak dialokasikan untuk sesi jarak jauh. Ini memungkinkan Anda mentransfer data biner, dll. Tanpa harus berurusan dengan kebiasaan TTY. Ini adalah lingkungan yang disediakan untuk perintah yang dieksekusi pada
computerone
.Namun, ketika Anda menjalankan ssh tanpa perintah jarak jauh, itu TIDAK mengalokasikan TTY, karena Anda cenderung menjalankan sesi shell. Ini diharapkan oleh
ssh [email protected]
perintah, tetapi karena penjelasan sebelumnya, tidak ada TTY tersedia untuk perintah itu.Jika Anda ingin shell aktif
computertwo
, gunakan ini, yang akan memaksa alokasi TTY selama eksekusi jarak jauh:Ini biasanya sesuai ketika Anda akhirnya menjalankan shell atau proses interaktif lainnya di akhir rantai ssh. Jika Anda akan mentransfer data, itu tidak tepat atau diperlukan untuk menambahkan
-t
, tetapi kemudian setiap perintah ssh akan berisi perintah penghasil data atau -konsumen, seperti:sumber
Ada cara yang lebih baik untuk menggunakan SSH sebagai relay: gunakan
ProxyCommand
opsi. Anda harus memiliki kunci pada mesin klien yang memungkinkan Anda masuk ke komputer kedua (kunci publik adalah cara yang disarankan untuk menggunakan SSH dalam sebagian besar keadaan). Masukkan ini ke dalam~/.ssh/config
dan jalankanssh computertwo
.nc
adalah netcat . Salah satu dari beberapa versi yang tersedia akan dilakukan.sumber
Itu mengharapkan terminal interaktif pada perangkat tty di server perantara.
Jika Anda mencoba perintah ini, itu akan berfungsi:
Lihat
man ssh
untuk-t
pilihan.sumber
Saya memecahkan ini dengan menambahkan RequestTTY Ya ke file konfigurasi ssh saya yang terletak di ~ / .ssh / config seperti ini ...
sumber
Anda dapat menggunakan opsi PROXY Jump di ssh
Jadi jika saya perlu terhubung ke hostB tapi saya harus melalui hostA dulu untuk sampai ke sana. Biasanya saya mau
Saya sekarang melakukan ini
sumber
Anda dapat mengganti opsi konfigurasi SSH "RequestTTY" dari baris perintah.
Contoh kerja saya
cd-serv-one.sh
mulai/bin/bash
dalam sesi SSH setelah menjalankan beberapa perintah:Dan sekarang saya hanya menjalankan
./cd-serv-one.sh
untuk memulai sesi SSH yang dibutuhkan.sumber