menjaga koneksi ssh tetap hidup dan tahan saat beralih koneksi antarmuka jaringan

13

Skenario:

  1. Di meja saya dengan laptop terhubung ke ethernet dan terhubung ke server jauh melalui SSH
  2. Ingin pindah ke sisi lain kantor dengan laptop dan ganti ke WiFi tanpa mengganggu koneksi SSH

Saya sudah mencoba: menghubungkan ke WiFi terlebih dahulu kemudian melepaskan ethernet; dan juga memutuskan koneksi ethernet terlebih dahulu kemudian menghubungkan ke WiFi. Tidak ada pendekatan yang berhasil. Juga mencoba ketika menggunakan server Ubuntu dan OS X bersama dengan kedua opsi OS juga untuk klien. Tidak berhasil

Sepertinya saya perlu beberapa cara untuk memberitahu koneksi SSH saya bahwa itu harus mulai menggunakan antarmuka jaringan yang baru terhubung, bukan antarmuka lama yang terputus. Ada ide?

Saya menyadari bahwa saya bisa tetap menggunakan WiFi sepanjang hari, tetapi saya tidak ingin melakukan itu. Saya juga menyadari bahwa saya hanya dapat bekerja dari dalam sesi layar pada server jarak jauh dan kemudian menyambung kembali ke sesi layar setelah mengubah antarmuka, tetapi saya juga tidak ingin melakukan itu. Sebagai contoh, saya mungkin mem-piping beberapa perintah besar seperti dump database SSH atau saya mungkin memiliki file yang terbuka melalui SSHFS, atau saya mungkin hanya ingin menghindari gangguan menghubungkan kembali

Sean
sumber
3
Jika Anda mendapatkan alamat IP yang sama dari kedua arah, maka ini seharusnya berfungsi. Jika tidak, itu sangat tidak mungkin.
Alan Curry
@AlanCurry Jika klien dan server mendukung MPTCP, maka dimungkinkan. Tetapi dukungan MPTCP masih sangat terbatas, jadi itu tidak mungkin terjadi.
kasperd

Jawaban:

4

Saya menduga bahwa solusi ini tidak akan berfungsi untuk SSHFS, dll, tetapi Anda bisa melihat Mosh yang menyediakan dukungan roaming untuk setidaknya shell itu sendiri.

Grisha Levit
sumber
Ini terlihat seperti solusi yang sangat baik, tetapi sayangnya perlu diinstal di server juga, yang tidak selalu mungkin karena izin.
user000001
4

Saya khawatir Anda tidak dapat melakukan ini, menurut definisi. Sesi SSH berjalan melalui koneksi TCP, yang ditentukan oleh empat-tupel (alamat sumber, port sumber, alamat tujuan, port tujuan). Anda tidak dapat menggeser koneksi yang ada ke alamat yang berbeda pada klien (selain dari kenyataan bahwa OS akan meruntuhkan koneksi ketika antarmuka turun).

NAT mungkin memperumit gambaran ini, tetapi tidak dengan cara apa pun yang akan membantu Anda.

Richard E. Silverman
sumber
Ya, tetapi aplikasi dapat terhubung kembali setelah mengetahui bahwa soket telah ditutup. Apakah protokol SSH memiliki ketentuan untuk melanjutkan sesi lama?
Ajay Brahmakshatriya
@AjayBrahmakshatriya SSH tidak memiliki alat untuk melanjutkan sesi
Ferrybig
2

Utas lama, saya tahu, tetapi demi kelengkapan karena saya mencari hal yang sama ...

Di Windows 7 atau yang lebih baru, Anda cukup memilih adaptor wifi dan adaptor Ethernet dan memilih "Bridge Connection". Ini akan memberi Anda satu alamat IP untuk keduanya, dan sekarang Anda dapat memutuskan dan menyambungkan kembali Ethernet sesuka hati (diberikan jangkauan wifi terus menerus).

Torium
sumber
Ide bagus, saya harus mencoba ini.
Doug
Jika melakukan ini, jangan tidak bisa ke kedua jaringan sekaligus, tergantung pada pengaturannya, itu menendang semua orang di area jaringan (sumber: ini terjadi pada saya)
Ferrybig
2

Saya mengelola ini dengan dua cara:

Mulai sesi dari server terminal di pusat data Anda (RDP / Windows / dll)

ATAU

Instal GNU atau dan mulai setelah login.

Saya lebih suka tmuxkarena screensekolahnya lumayan tua, tetapi jika Anda hanya diperbolehkan menginstal paket yang didukung, screenada di repo RHEL.

ATAU

Lakukan keduanya.

Doug
sumber
tmuxsangat berguna. Menjalankan hal-hal yang jauh di dalam tmuxadalah kebiasaan yang sangat baik untuk masuk.
anak ayam
Ya saya setuju. Fungsi beberapa jendela sangat bagus.
Doug
1

Itu tidak bisa dilakukan dengan mudah.

Saya dapat mengarahkan Anda ke sejumlah aplikasi yang sangat mahal yang memungkinkan Anda untuk menjaga sesi telnet atau SSH ketika berpindah di antara IP atau AP, atau bahkan untuk periode terputusnya periode jaringan yang lama, tetapi mereka pada dasarnya mencapainya dengan membuat server yang selalu terbuka sesi-sisi untuk mesin klien sehingga server tidak tahu koneksi berbeda atau jatuh.

Saya kira Anda bisa membuat kode seperti itu, tetapi saya membayangkan bahwa jika itu mudah dilakukan, klien saya tidak akan diperkosa dengan biaya 5 digit untuk menjaga koneksi terminal tetap terbuka pada pemindai genggam nirkabel.

Meskipun, saya tersandung di layar, yang mengklaim untuk membuat sesi SSH gigih , yang mungkin benar-benar berfungsi ... mencobanya.

HopelessN00b
sumber
1

Masalahnya mungkin bahwa alamat IP sumber Anda berubah ketika Anda beralih antara kabel dan wifi. Ini akan mencegah sesi ssh kembali.

Saya menangani ini di linux dengan menghubungkan melalui vpn dan memastikan bahwa koneksi vpn selalu memberikan ip yang sama ke akun Anda (tidak sulit untuk menegakkan, tetapi kemungkinan besar bahwa Anda akan menerima ip yang sama melalui vpn secara default pula jika itu tersedia, tetapi lebih baik menegakkannya untuk memastikan). Saya kebanyakan menggunakan vtun, tetapi openvpn juga ok. Pastikan koneksi Anda melewati vpn (perutean yang benar, prefix yang didorong, ...)

Saya sudah bisa offline dari kabel bahkan selama 5 menit dan kemudian terhubung ke wifi dan masih bisa tetap terhubung ke semua sesi ssh saya. Ping yang sedang berlangsung, mtr, htop, ... terus saja ketika vpn dipulihkan seolah-olah tidak ada yang terjadi.

multia
sumber
0

Cobalah menjadi wifi saja saat pertama kali memulai sesi ssh. Kemudian colokkan ethernet Anda. Itu akan memungkinkan koneksi baru untuk beralih ke ethernet, tetapi koneksi yang dibuat akan tetap ada di wifi. Setidaknya saya pernah melihatnya bekerja seperti ini dengan OSX, jadi OS / perangkat keras dapat bervariasi.

menjadi paling lucu
sumber
0

Saya cukup yakin Anda dapat melakukan ini dengan sejumlah konyol peretasan w / VMs dan Tunneling.

Ini belum diuji, tetapi beri tahu saya jika memang berhasil.

  1. Buat VM tamu yang memiliki 2 antarmuka, 1 adaptor bridged (ke wifi) dan 1 jaringan host saja
  2. Katakanlah VM memiliki 192.168.0.25 untuk adaptor bridged ke istri dan 192.168.56.5 hanya untuk host.
  3. Di dalam vm buat koneksi ssh dengan terowongan ke port sisi jauh 22 ssh -L 10022:remote.server.example.com:22
  4. Sekarang terhubung melalui terowongan. ssh 192.168.56.3 -p 10022
  5. Ketika Anda kehilangan koneksi wifi Anda, ubah adaptor pada VM ke adaptor eter bersih.
  6. Semoga tidak hup atau mengacaukan tabel routing

beri tahu saya jika berhasil.

Mike Graf
sumber