Saya ingin mengonfigurasi SSH dan layar sedemikian rupa sehingga info masuk akan selalu dipasang kembali ke sesi layar. Idealnya, sesi itu tidak akan berhenti tetapi lepas ketika saya menekan Cd. Bagaimana ini bisa dicapai? Dan pengaturan apa yang bermanfaat lainnya yang ada untuk membuat SSH-life saya lebih mudah?
sumber
Saya memiliki yang berikut ini di .bash_profile di server jarak jauh saya:
Ini melakukan dua hal: pertama, mengatur fungsi shell untuk mengganti shell dan meneruskan koneksi ssh-agent, kedua memanggil fungsi setelah jeda selama beberapa detik (jika Anda tidak ingin layar mulai).
if
Klausa pertama akan benar jika layar yang belum berjalan (-z "${STY}"
) terpasang ke terminal (-t 0
) dan saya tidak menjalankan sudo (yang terkadang tidak berubah$USER
).The
reattach
Fungsi pertama akan memeriksa apakah ssh disebut dengan port ssh-agent aktif (-n "${SSH_AUTH_SOCK}"
). Kemudian ia akan mengganti apa pun yang ada pada~/.ssh/agent-script
file socket yang sedang aktif dan mengganti variabel environment ($SSH_AUTH_SOCK
) dengan nilai baru. Kemudian skrip akan mengganti shell saat ini dengan satuscreen
sesi (pastikan hanya ada satu yang ada). Setiap argumen kereattach
fungsi diteruskan ke perintah (${1:+"$@"}
).Bagian terakhir pertama menghapus setiap sesi mati (
screen -wipe
), membiarkan pengguna (saya) tahu bahwa layar akan segera dimulai dan sebaliknya dapat kembali ke shell dengan menekan Ctrl- C. Kemudian ia menunggu selama 5 detik dan memanggilreattach
fungsi.sumber
Pertama, jika Anda menggunakan byobu Anda dapat mengkonfigurasi sesi shell baru untuk selalu secara otomatis memulai byobu (yang pada dasarnya adalah konfigurasi layar yang bagus, meskipun versi yang lebih baru dapat menggunakan tmux sebagai backend). Jika Anda benar-benar tidak ingin byobu maka Anda mungkin dapat mengatur layar untuk terhubung secara manual dengan mengedit
.profile
skrip konfigurasi shell Anda atauexec screen
jikaTERM != "screen"
.Jika tidak suka, Anda dapat menggunakan
authorized_keys
file untuk menjalankan perintah khusus untuk koneksi dengan kunci tertentu (dan Anda dapat memiliki kunci sebanyak yang Anda suka). Lihatman sshd
detailnya. Saya sarankan Anda membuat perintah menjalankan skrip yang memeriksa apakah layar berjalan dan terhubung, atau memulai sesi baru.Adapun untuk memutuskan sambungan pada Ctrl-D, layar memungkinkan Anda untuk mengatur pemetaan kunci di Anda
.screenrc
. Lihatman screen
detailnya. Anda sedang mencari "bindkey".sumber
Mungkin sama sekali tidak relevan dengan pertanyaan Anda, tetapi pernahkah Anda mempertimbangkan untuk menggunakan TMUX? Itu banyak fungsi yang Anda cari di luar kotak.
Misalnya. jika Anda memutuskan sambungan dari sesi SSH ketika Anda berada di bawah TMUX, yang perlu Anda lakukan adalah ssh kembali dan menjalankan "tmux a" untuk melampirkan ke sesi Anda. Sejak saya mulai menggunakan TMUX, saya lupa apa perintah nohup / disown ... jika Anda perlu menjalankan sesuatu dan keluar - jalankan di dalam tmux dan lepas. Output perintah akan disangga, sehingga Anda dapat memeriksanya nanti.
untuk melampirkan secara otomatis Anda dapat menambahkan sesuatu seperti di bawah ini ke .bashrc:
atau bahkan lebih mudah
Ini memiliki jejak memori yang lebih rendah dan keseluruhan IMHO jauh lebih baik / lebih mudah digunakan opsi.
Pintasan meta-d adalah pemetaan default untuk melepaskan TMUX.
sumber
screen -dAr default || screen -AS default
bekerja untukku. Saya menambahkannya ke ~ / .bashrc saya .Jelaskan secara singkat sakelar:
d
- Lepaskan layar jika masih terpasang, dari sesi lain.A
- Sesuaikan jendela di layar dengan ukuran terminal baru.r default
- Pasang ke layar yang disebut default.Jika perintah layar pertama (yang sebelumnya
||
) tidak berhasil, yang kedua dijalankan:A
- Seperti dijelaskan di atas ...S default
- Buat sesi layar baru dengan nama default .sumber
Saya sarankan menggunakan byobu . Alat ini menggunakan tmux dan menyediakan bilah alat yang bagus & fasilitas jendela lain yang nyaman, hotkeys dll.
Dengan perintah-perintah di atas setelah SSH berhasil masuk sistem dengan mencoba dan melampirkan sesi byobu-tmux yang ada, jika tidak maka akan membuat sesi baru.
sumber