keluar dari semua koneksi SSH dalam satu perintah dan tutup Putty


18

Apakah ada cara untuk mundur dari semua koneksi SSH dan menutup Putty dalam "satu tembakan"? Saya bekerja di Windows 7 dan menggunakan Putty ke SSH ke berbagai host Linux.

Contoh cara saya bekerja:

SSH to host1 with PuTTY...
banjer@host1:~> #...doin some work...ooh! need to go check something on host8...
banjer@host1:~> ssh host8
banjer@host8:~> #...doin some work...OK time for lunch. lets close putty...
banjer@host8:~> exit
banjer@host1:~> exit
Putty closes.

Per di atas, ada cara untuk mendapatkan dari host8 untuk menutup Putty dalam satu tembakan? Kadang-kadang saya menemukan diri saya hingga 5 atau 10 host. Saya menyadari bahwa saya dapat mengklik X untuk menutup jendela Putty, tetapi saya ingin memastikan koneksi SSH saya ditutup dengan benar dengan menggunakan perintah keluar. Saya juga menyadari bahwa saya meminta tips tentang cara meningkatkan kemalasan. Saya hanya akan menuliskannya sebagai "bagaimana saya bisa lebih efisien".


6
Bukan secara langsung apa yang Anda tanyakan tetapi bagaimana dengan hanya menekan ctrl+dbeberapa kali?
Ulrich Dangel

@UlrichDangel Saya belum pernah menggunakan itu sebelumnya, tetapi juga cara cepat untuk mundur dari koneksi dengan cepat.
Banjer

2
Apakah Anda benar-benar bersarang sesi ssh 5 hingga 10 level? Apakah Anda menyadari bahwa itu membuat terowongan berbelit-belit yang memantulkan semua paket di sesi ssh Anda melalui semua host tersebut? Bisakah Anda membuat masalah hilang dengan tidak bersarang sesi ssh?
jw013

@ jw013 Tidak, saya tidak menyadarinya, tetapi masuk akal. Jujur, level 5-10 adalah berlebihan, tapi saya mencoba untuk menggambarkan pertanyaan saya tentang "bagaimana cara keluar dari Putty dalam satu gerakan."
Banjer

Jawaban:


29

Coba gunakan sshurutan escape terminasi koneksi.

Di sshsesi tersebut, masukkan ~.(tilde dot). Anda tidak akan melihat karakter saat mengetiknya, tetapi sesi akan segera berakhir.

$ ~.
$ Connection to me.myhost.com closed.  

Dari man 1 ssh

The supported escapes (assuming the default ‘~’) are:
 ~.      Disconnect.
 ~^Z     Background ssh.
 ~#      List forwarded connections.
 ~&      Background ssh at logout when waiting for forwarded 
         connection / X11 sessions to terminate.
 ~?      Display a list of escape characters.
 ~B      Send a BREAK to the remote system (only useful for SSH protocol
         version 2 and if the peer supports it).
 ~C      Open command line.  Currently this allows the addition of port 
         forwardings using the -L, -R and -D options (see above). It also
         allows the cancellation of existing remote port-forwardings using 
         -KR[bind_address:]port.  !command allows the user to execute a 
         local command if the PermitLocalCommand option is enabled in
         ssh_config(5).  Basic help is available, using the -h option.
 ~R      Request rekeying of the connection (only useful for SSH protocol 
         version 2 and if the peer supports it).

Sangat keren! Adakah cara untuk memasukkan ~.alias atau fungsi? Hanya untuk memberinya nama yang mudah diingat seperti exitall. Sekarang saya meminta terlalu banyak :). Saya mencoba beberapa hal ~/.bashrctetapi mendapatkan -bash: ~.: command not found. Saya kira bash melihatnya sebagai string dan bukan urutan keluar yang datang langsung dari keyboard.
Banjer

Saya juga suka ctrl+dsolusinya, tetapi ini menjawab pertanyaan saya lebih langsung. Terima kasih semuanya.
Banjer

3
@ Banjer bash tidak pernah melihat ~., itu ditangani sshsendiri.
Gilles 'SANGAT berhenti menjadi jahat'

@Gilles Gotcha, masuk akal.
Banjer

Dan tidak ada jaminan bahwa Putty juga melakukan ini. sshKlien CLI membutuhkan teknik ini karena itu CLI. Putty adalah aplikasi GUI dan ada banyak cara yang lebih ramah pengguna untuk melakukan hal ini pada GUI.
Alexios

11

Cukup tekan CtrlDdan itu akan mencatat Anda di sana untuk menahan ctrl dan tekan "d" sampai jendela menghilang.


1
Sayangnya, ini tidak bekerja secara universal. Setiap sesi yang menjalankan editor atau alat layar penuh lainnya cenderung diabaikan EOT. Dan bahkan bashakan mengabaikannya di tengah baris perintah. Cobalah sendiri: ketikkan satu huruf dan coba Ctrl-D.
Alexios

Apa yang dilakukan Ctrl + D, maksud saya apakah itu ada dengan aman atau hanya membunuh prosesnya?
AMB

Keluar dengan aman. Ini adalah jalan pintas shell yang sama dengan mengetik 'keluar' dan menekan enter.
Joe

Sebenarnya masalah saya (windows git bash & ubuntu bash) a logout.
velis

ya, saya percaya keluar juga panggilan keluar karena koneksi ssh cenderung bukan sesi login.
Joe


2

Cara lain adalah dengan membuat functionuntuk ssh:

   function ssh(){ /usr/bin/ssh $@ ; exit ; } 

Sayangnya itu juga akan selalu menutup koneksi dan logout dari konsol setelah Anda selesai bekerja pada sistem jarak jauh.

Perhatikan, bahwa Anda perlu membuat fungsi seperti itu di semua server Anda, jika tidak, peretasan ini tidak akan berfungsi. Btw, Anda selalu dapat menempatkan fungsi ke ~ / .bashrc atau ~ / .wh whatever_shell_you_use_rc.

Tampaknya hack sedikit kotor dibandingkan dengan cara lain.


functionbukan POSIX - cukup hapus kata kunci, dan Anda perlu mengutip $@dengan benar, atau argumen Anda akan diteruskan setelah pemisahan kata (buruk).
Chris Down

2

Atau Anda dapat menggunakan execuntuk mengganti proses shell Anda dengan sshketika melompat ke host lain:

SSH to host1 with PuTTY...
banjer@host1:~> #...doin some work...ooh! need to go check something on host8...
banjer@host1:~> exec ssh host8
banjer@host8:~> #...doin some work...OK time for lunch. lets close putty...
banjer@host8:~> exit
Putty closes.

Kedalaman 5 level tidak cantik, karena lalu lintas akan melewati semua server lain. Karena itu saya tidak merekomendasikan hanya membunuh Putty atau ssh (~.), Karena (tergantung pada apa yang Anda lakukan) ini dapat mengakibatkan proses yatim di server.

Lebih baik mencoba dan tidak terlalu "malas". Klik kanan pada bilah judul puttys membuat pembukaan sesi baru menjadi cepat. Jika Anda memiliki server "default" dan menerima 1 lompatan dari itu, fitur "Duplicate Session" sangat berguna. Terutama saat menggunakan otentikasi pubkey.


2

Jika Anda tidak keberatan melakukan sedikit skrip, Anda dapat melakukan ini.

Script: myssh.sh

#!/bin/bash
ssh $1
if [ $? -eq 5 ]; then
 exit 5
fi

Panggil melalui perintah dot:

$ . myssh user@server.com

Jika Anda ingin keluar satu tingkat:

$ exit

Jika Anda ingin keluar semua:

$ exit 5

Tentu saja, Anda harus menyalinnya ke setiap komputer yang mungkin Anda ssh dari. Juga, bukankah lebih mudah untuk hanya mendefinisikan fungsi shell yang disebut ssh? Itu akan menghindari periode sebelumnya, dll.
etherfish

-1

Mengetik logout di jendela terminal dempul melakukannya untuk saya:

richard@forevermore:~ > logout

Menutup koneksi ssh dan keluar dari Aplikasi Putty.


Saya yakin Anda tidak membaca pertanyaan dengan benar. OP tidak ssh host1, dan kemudian, dari host1, tidak ssh host8. Pada saat itu a logoutakan melakukan hal yang sama dengan exitperintah yang sudah mereka ketahui - keluar dari host8dan mengembalikannya host1.
G-Man Mengatakan 'Reinstate Monica'

Ok, saya mengerti, salah saya.
Richard
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.