Terkadang sesi SSH saya terputus dengan Write failed: Broken pipe
pesan. Apa artinya? Dan bagaimana saya bisa menjaga sesi saya tetap terbuka?
Saya tahu screen
, tapi itu bukan jawaban yang saya cari. Saya pikir ini adalah sshd
opsi konfigurasi.
Terkadang sesi SSH saya terputus dengan Write failed: Broken pipe
pesan. Apa artinya? Dan bagaimana saya bisa menjaga sesi saya tetap terbuka?
Saya tahu screen
, tapi itu bukan jawaban yang saya cari. Saya pikir ini adalah sshd
opsi konfigurasi.
Jawaban:
Mungkin server Anda terlalu lama menutup koneksi yang tidak digunakan. Anda dapat memperbarui klien Anda ( ServerAliveInterval
) atau server Anda ( ClientAliveInterval
)
ServerAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the server, ssh(1) will send a message through
the encrypted channel to request a response from the server. The
default is 0, indicating that these messages will not be sent to
the server. This option applies to protocol version 2 only.
ClientAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the client, sshd(8) will send a message
through the encrypted channel to request a response from the
client. The default is 0, indicating that these messages will
not be sent to the client. This option applies to protocol
version 2 only.
Untuk memperbarui server Anda (dan restart Anda sshd
)
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
Atau sisi klien:
echo "ServerAliveInterval 60" >> ~/.ssh/config
~/.ssh/config
di Mac saya, apakah saya harus membuatnya di sana atau ada di tempat lain?
~/.ssh
) terlebih dahulu. Jadimkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
Solusi alternatif adalah menggunakan mosh
- shell ponsel . Berbeda dengan ssh ia terhubung melalui UDP dan mendukung roaming. Anda dapat memulai sesi Anda di rumah, menangguhkan laptop Anda, membawanya ke kantor / teman / di mana pun Anda memiliki internet, membatalkan pengeluaran laptop Anda dan terus bekerja seolah-olah tidak ada yang terjadi. Ini sangat berguna jika Anda berada di koneksi internet yang buruk: Ini menunjukkan umpan balik instan jika penekanan tombol Anda tidak mencapai server dan terus mencoba membangun kembali koneksi.
Instalasi dan pengaturannya sederhana: Sekarang sudah termasuk dalam semua distribusi Linux saat ini (ditambah beberapa non-Linux) dan mengoordinasi inisialisasi sesi dan otentikasi melalui koneksi ssh sebelumnya. Jadi jika Anda dapat terhubung melalui ssh user@server
Anda sangat mungkin dapat terhubung dengan mosh hanya dengan menelepon mosh user@server
, jika paket mosh diinstal pada kedua ujungnya.
Alasan utama kegagalan koneksi adalah Anda harus mencapai server pada port UDP (kisaran default: 60000-61000) agar mosh dapat berfungsi. Jadi, jika server berada di belakang firewall, Anda sebagian besar kurang beruntung jika tidak dapat membuat lubang di dalamnya sendiri ( implikasi keamanan ).
Jika Anda ingin memiliki periode koneksi yang lebih lama, di klien tambahkan:
echo 'ServerAliveInterval 30' | sudo tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | sudo tee -a ~/.ssh/config
ServerAliveCountMax
secara default ini diatur ke 3. Oleh karena itu setelah ServerAliveInterval
mengirim 3 paket kecil informasi ke server Anda maka secara otomatis akan keluar. Mengaturnya ke 1200 berarti proses ini harus terjadi setidaknya 1200 kali. Singkatnya, Anda harus terhubung setidaknya 30 * 1200 detik (10 jam).
Biasanya berarti koneksi jaringan (TCP) Anda telah disetel ulang. Misalnya penyedia internet Anda menghubungkan kembali Anda atau sesuatu seperti ini.
Saya memiliki masalah yang sama tetapi tidak seperti yang diharapkan. Jika Anda menemukan bahwa di jaringan yang sama server lain sedang mencoba untuk alamat IP yang sama, Anda akan menghadapi masalah yang sama. Untuk mengatasi ini, Anda perlu memeriksa apakah ada server lain yang menggunakan alamat IP yang sama. Ini dapat dilakukan dengan menggunakan arp
perintah.
Saya menggunakan Debian jadi di sini adalah contoh dari perintah yang saya gunakan untuk menentukan apakah server lain memang menggunakan alamat IP yang sama
apt-get install arp-scan
arp-scan -I eth0 -l | grep 192.168.1.42
192.168.1.42 d4:eb:9a:f2:11:a1 (Unknown)
192.168.1.42 f4:23:a4:38:b5:76 (Unknown) (DUP: 2)
Anda akan melihat dua set alamat mac menggunakan alamat IP yang sama. Hindari konflik dengan mengatur satu ke alamat IP lainnya.
Penyebab lain untuk "Pesan Pipa Rusak" adalah bahwa mesin lain sedang mencoba menggunakan IP yang sama dengan host Anda.
Cara sederhana untuk menguji apakah orang lain menggunakan IP itu:
Untuk mengetahui mesin mana yang ada di jaringan Anda, Anda dapat menggunakan judul pertanyaan Unix & Linux ini: Cara menemukan mesin lain yang terhubung ke jaringan lokal .