Bagaimana cara keluar dari koneksi SSH?

245

Saya terhubung ke server melalui SSH untuk mengirim pesan ke server soket menggunakan perintah seperti:

ssh 181.169.1.2 -p 5566

Setelah koneksi dibuat dan saya menulis pesan dan mengirimkannya, saya tidak dapat keluar dari mode teks. Saya hanya diizinkan memasukkan lebih banyak teks dan hanya itu.

Apakah ada perintah atau kombinasi tombol yang memungkinkan saya untuk kembali ke mode perintah?

Andreea
sumber

Jawaban:

156

Bagaimana cara keluar dari koneksi SSH?

Dua arah:

  • menutup sesi shell, misalnya dengan exitdiikuti oleh Enter, atau Ctrl- dbiasanya memungkinkan Anda untuk keluar dari sshsesi secara normal,
  • dalam kasus di mana Anda memiliki koneksi yang buruk dan shell tidak responsif, tekan Entertombol, lalu ketik ~.dan ssh harus segera menutup dan mengembalikan Anda ke command prompt Anda.

Opsi pertama harus intuitif, tetapi bagaimana kita tahu opsi yang terakhir?

Kita dapat mempelajari informasi ini dari membaca halaman manual secara hati-hati.

$ man ssh

memberi kami dokumentasi SSH , yang memiliki bagian berikut tentang karakter melarikan diri:

ESCAPE CHARACTERS
     When a pseudo-terminal has been requested, ssh supports a number of
     functions through the use of an escape character.

     A single tilde character can be sent as ~~ or by following the tilde by
     a character other than those described below.  The escape character
     must always follow a newline to be interpreted as special.  The escape
     character can be changed in configuration files using the EscapeChar
     configuration directive or on the command line by the -e option.

     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 if the peer sup‐
             ports 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 port-forwardings with
             -KL[bind_address:]port for local, -KR[bind_address:]port for
             remote and -KD[bind_address:]port for dynamic port-forwardings.
             !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 if the peer
             supports it).

     ~V      Decrease the verbosity (LogLevel) when errors are being written
             to stderr.

     ~v      Increase the verbosity (LogLevel) when errors are being written
             to stderr.
Aaron Hall
sumber
Saya tidak menemukan bagian "bagaimana kita tahu ini" sangat membantu, karena bagi saya itu menyiratkan bahwa ada semacam solusi yang jelas-untuk-menemukan, ketika saya tidak menemukan itu sangat intuitif bahwa saya akan "man ssh "untuk menemukan cara memutuskan koneksi. Bagaimana saya menemukan "keluar", misalnya? Saya setuju itu bagus untuk menegaskan kembali memeriksa halaman manual ketika Anda bisa.
Alexander Pritchard
@AlexanderPritchard Saya telah memperbarui jawaban saya untuk lebih hati-hati menjelaskan apa yang kami lakukan di sini. Jika Anda menemukan halaman manual sulit untuk dipahami, ajukan masalah dengan pengelola, atau bahkan lebih baik, kirimkan permintaan tarik dengan peningkatan (tanpa pengecualian baik).
Aaron Hall
1
Kedengarannya bagus secara teori, tetapi dalam praktiknya, banyak orang berjuang untuk mencari tahu bagaimana menavigasi perintah ini karena bahkan mengetahui cara mencari informasi yang Anda inginkan mengasumsikan konteks yang tidak dimiliki orang. Mengajukan masalah dengan pengelola dan mengajukan permintaan tarik dengan peningkatan bahkan lebih jauh dari ini. Saya tidak berpendapat bahwa halaman manual berguna, tetapi jika halaman itu secara definitif bermanfaat seperti yang tampaknya ada pada beberapa orang, saya tidak akan menggunakan Stack Exchange. Saya ingin menjadi jelas, saya pikir jawaban Anda baik-baik saja, dan bahwa orang-orang harus memeriksa halaman manual, tetapi mereka tidak semuanya berguna.
Alexander Pritchard
6
"Jika mereka sama bermanfaatnya dengan beberapa yang membuatnya tampak, aku tidak akan menggunakan Stack Exchange." Saya setuju, dan itulah sebabnya saya mencoba menulis jawaban yang bagus. Mengutip dan mengutip sumber referensi bukan untuk membuat orang merasa bodoh atau buruk karena belum membaca dari sumber itu, hal ini dilakukan untuk memberikan bukti lebih lanjut tentang apa yang seharusnya menjadi pernyataan fakta yang mungkin dapat dibuktikan, serta menginformasikan kepada pengguna di mana lebih banyak informasi yang relevan dapat disimpan. Anda ingin tahu bahwa Anda melakukan hal yang benar secara semantik, juga mengetahui bahwa itu berhasil.
Aaron Hall
278

Jawaban singkat: Ketik exit

Jika itu tidak berhasil, namun ...

SSH Escape Character dan Disconnect Sequence

Sebagian besar implementasi SSH menerapkan karakter pelarian untuk sesi interaktif, mirip dengan Ctrl-]kombinasi telnet . Karakter melarikan diri SSH default ~, dimasukkan pada awal baris.

Jika Anda ingin mengakhiri sesi OpenSSH interaktif yang macet dan tidak dapat keluar dengan memasukkan exitatau CtrlDke dalam shell di sisi jarak jauh , Anda dapat memasukkan ~diikuti oleh titik .. Untuk memastikan untuk memasukkan karakter pelarian di awal jalur input, Anda harus menekan Enter terlebih dahulu. Jadi, urutan berikut dalam kebanyakan kasus akan mengakhiri sesi SSH:

Enter~.

Urutan Escape Lainnya

OpenSSH, misalnya, menawarkan urutan pelarian lainnya selain itu ~.. Memasukkan ~?selama sesi harus memberi Anda daftar. Beberapa contoh:

  • ~diikuti Ctrl-Zmenunda sesi,
  • ~& menempatkannya langsung ke latar belakang,
  • ~# memberikan daftar koneksi yang diteruskan dalam sesi ini.
  • Jika Anda ingin cukup memasukkan tilde pada awal garis, Anda harus ganda itu: ~~.

Karakter melarikan diri dapat diubah menggunakan opsi baris perintah -e. Jika Anda menetapkan nilai khusus -e none, melarikan diri dinonaktifkan dan sesi sepenuhnya transparan.

Lihat juga halaman manual OpenBSD di ssh (yang direferensikan dari www.openssh.org ) di bawah -eopsi baris perintah

Dubu
sumber
2
Mengapa membuatnya sederhana ketika Anda bisa membuatnya rumit tanpa guna?
MariusMatutiae
7
@MariusMatutiae OP meminta kasus di mana tidak ada shell jarak jauh untuk masuk exitatau Ctrl-D, tetapi hanya proses mendengarkan. Saya dengan jelas menyatakan bahwa solusi saya cocok untuk sesi yang macet dan tidak bisa keluar . Saya mencoba mengklarifikasi hal ini lebih lanjut, semoga lebih mudah dilihat sekarang.
Dubu
5
Saya skeptis, tetapi ~.tanpa ruang adalah apa yang saya butuhkan, terima kasih! :)
Jamey
2
Dalam tata letak keyboard jerman swiss, tilde dihasilkan dengan menekan AltGr + ^ (plus itu adalah kunci pemblokiran). Karena ini, tampaknya urutan pelarian tidak bekerja. Adakah yang tahu bagaimana cara mengetik default escape in swiss german?
Daniel Alder
4
@ Dobu Menemukan alasan mengapa itu tidak berhasil sebelumnya. Jika Anda sudah mengetik ~ di baris yang sama (yang dengan mudah terjadi jika Anda menguji), berikut ini ~. urutan diabaikan. Harus tekan kembali dulu ...
Daniel Alder
32

Apakah Anda ingin keluar dari shell SSH?

Anda dapat mengetik exitdan menekan Enter, atau menggunakan Ctrl+D

Jeroen Vermeulen - MageHost
sumber
1
"exit" membantu saya karena ctrl + d tidak berfungsi di VNC viewer ... terima kasih
raj gupta
1
Ini tidak berfungsi jika mesin dibekukan atau dihilangkan atau aplikasi tidak menanggapi input apa pun
Daniel Alder
11

Cukup ketik exitatau logout(lalu tekan Enter tentu saja) keduanya akan berfungsi.

okta
sumber
4

Ini adalah karakter yang didukung yang menyediakan berbagai opsi untuk bermain-main dengan ssh.

Urutan pelarian yang didukung:

 ~.  - terminate session

 ~B  - send a BREAK to the remote system

 ~R  - Request rekey (SSH protocol 2 only)

 ~#  - list forwarded connections

 ~?  - this message

 ~~  - send the escape character by typing it twice

(Perhatikan bahwa pelarian diakui hanya segera setelah baris baru.) Anda dapat menutup daftar urutan Escape dengan menekan Enter.

0_o
sumber
3

Anda dapat menulis logoutdi baris konsol (dan tekan Entertentu saja).

Etienne
sumber
1

MacOS : ketika ssh hang gunakan urutan berikut:

ENTER 
SHIFT+`
.

di mana: shift + ` menghasilkan ~ (karakter tilde)

Kamil Kiełczewski
sumber