Bir SSH bağlantısından nasıl çıkarım?


245

SSH üzerinden bir sunucuya bağlanıyorum gibi bir komut kullanarak bir soket sunucusuna mesaj göndermek için:

ssh 181.169.1.2 -p 5566

Bağlantı kurulduktan ve mesajı yazıp gönderdikten sonra metin modundan çıkamıyorum. Sadece daha fazla metin girebilirim, hepsi bu.

Komut moduna dönmeme izin veren bir komut ya da bir tuş kombinasyonu var mı?

Yanıtlar:


156

Bir SSH bağlantısından nasıl çıkarım?

İki yol:

  • Kabuk oturumunu kapatmak, örneğin veya exitardından Enter, Ctrl- - dgenellikle sshoturumdan normal şekilde çıkmanıza izin verir ,
  • Bağlantınızın kötü olduğu ve kabuğun yanıt vermediği durumda, Entertuşa basın, ardından ~.ssh yazmanız hemen kapanmalı ve komut isteminize dönmelidir.

İlk seçenek sezgisel olmalıdır, ancak ikinci seçeneği nasıl biliyoruz?

Bu bilgiyi man sayfasını dikkatlice okuyarak öğrenebiliriz.

$ man ssh

kaçış karakterleri hakkında aşağıdaki bölümü içeren SSH belgelerini bize verir :

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.

"Bunu nasıl biliyoruz" bölümünü özellikle yararlı bulmuyorum, çünkü bana göre, bulacağımı sezgisel bulmuyorum, bulacağım bir tür bariz çözüm olduğunu ima ediyorum. "bağlantının nasıl kesileceğini bulmak için. Örneğin, "çıkış" ı nasıl bulurdum? Kabul ettiğinizde man sayfalarını kontrol etmenin tekrar doğrulanmasının iyi olduğunu kabul ediyorum.
Alexander Pritchard

@AlexanderPritchard Burada ne yaptığımızı daha dikkatli açıklamak için cevabımı güncelledim. Man sayfasını anlamak zor buluyorsanız, bakıcıya bir sorun gönderin veya daha iyisi, (niteliksizce iyi) bir iyileştirme ile bir çekme isteği gönderin.
Aaron Hall

1
Bu teoride kulağa hoş geliyor ama pratikte birçok kişi bu komutların nasıl yönlendirileceğini bulmakta zorlanıyor, çünkü istediğiniz bilgiyi nasıl arayacağınızı bilmek bile bağlamda insanların olmadığını varsayıyor. Bir konuyu koruyucularla doldurmak ve çekme taleplerini iyileştirmelerle göndermek bunun ötesine geçmektedir. Man sayfalarının yararlı olduğunu iddia etmiyorum, ancak bazıları göründüğü kadar kesin olarak faydalı olsaydı, Stack Exchange kullanmazdım. Açık olmak istiyorum Cevabınızın iyi olduğunu ve insanların man sayfalarını kontrol etmesi gerektiğini düşünüyorum, ancak her şeyi kapsayan bir şekilde yararlı değiller.
Alexander Pritchard

6
“Bazıları göründüğü kadar kesin olarak yararlı olsalardı, Stack Exchange kullanmazdım.” Katılıyorum ve bu yüzden iyi cevaplar yazmaya çalışıyorum. Referans kaynaklardan alıntı ve alıntı yapmak, kimsenin o kaynaktan okumadığı için aptal ya da kötü hissetmesini sağlamak değildir, aksi takdirde belki de kanıtlanabilir bir iddia olduğu konusunda başka kanıtlar sağlamak ve ayrıca kullanıcıyı daha fazla bilgilendirmek için yapılır. ilgili bilgi saklanabilir. Anlamsal olarak doğru şeyi yaptığınızı ve çalıştığını bilmek istediğinizi bilmek istiyorsunuz.
Aaron Hall

278

Kısa cevap: Tür exit

Bu işe yaramazsa, ancak ...

SSH Kaçış Karakteri ve Bağlantıyı Kesme Sırası

SSH uygulamalarının çoğu, telnet Ctrl-]kombinasyonuna benzer şekilde etkileşimli oturumlar için bir kaçış karakteri uygular . Varsayılan SSH çıkış karakteri, ~satırın başına girilir.

Etkileşimli bir OpenSSH oturumu sonlandırmak istiyorsanız sıkıştı ve girilerek çıkıldı edilemez exitveya CtrlDuzaktan tarafında bir kabuk içine , sen durumlarını girebilirsiniz ~nokta izledi .. Kaçış karakterini bir giriş satırının başına girdiğinizden emin olmak için önce Enter tuşuna basmalısınız. Bu nedenle, aşağıdaki sıralama çoğu durumda bir SSH oturumunu sonlandırır:

Enter~.

Diğer Kaçış Dizileri

Örneğin OpenSSH, bunun yanında başka kaçış dizileri de sunar ~.. ~?Bir oturum sırasında girmek size bir liste vermelidir. Bazı örnekler:

  • ~ardından Ctrl-Zoturumu askıya alır,
  • ~& doğrudan arka plana koyar,
  • ~# Bu oturumda iletilen bağlantıların bir listesini verir.
  • Sadece bir satırın başında yaklaşık işareti girmek istiyorsanız, bunu iki katına çıkması vardır: ~~.

Escape karakteri, komut satırı seçeneği kullanılarak değiştirilebilir -e. Özel değeri ayarlarsanız -e none, kaçış devre dışı bırakılır ve oturum tamamen saydamdır.

Ayrıca komut satırı seçeneği altındaki ssh'deki ( www.openssh.org adresinden referans alınan ) OpenBSD kullanıcı sayfasına bakınız.-e


2
İşe yaramaz bir şekilde karmaşık hale geldiğinde neden basitleştiriyorsun?
MariusMatutiae

7
@MariusMatutiae OP, girilecek uzak kabuğun olmadığı exitveya Ctrl-Dsadece bir dinleme sürecinin bulunduğu bir dava istedi . Çözümümün sıkışmış ve çıkılamayan bir oturum için uygun olduğunu açıkça ifade ettim . Bunu daha açıklığa kavuşturmaya çalıştım, umarım şimdi görmek daha kolaydır.
Dubu

5
Kuşkuluydum, ama ~.boşluk olmadan tam ihtiyacım olan şeydi, teşekkürler! :)
Jamey

2
İsviçreli almanca klavye düzeninde, tilde AltGr + ^ tuşlarına basılarak oluşturulur (artı bir engelleme anahtarıdır). Bu nedenle, kaçış dizisinin işe yaramadığı anlaşılıyor. İsviçre Almancası varsayılan çıkış nasıl yazılacağını bilen var mı?
Daniel Alder

4
@Dobu Daha önce çalışmamasının nedenini buldu. Aynı satırda zaten ~ yazdıysanız (test ediyorsanız kolayca olur), aşağıdaki ~. dizileri göz ardı edilir. Önce geri dönüş yapmak zorunda kaldım ...
Daniel Alder

32

SSH kabuğundan çıkmak ister misiniz?

Yazabilir exitve vurabilir Enterya da Ctrl+D


1
"exit", ctrl + d'nin VNC görüntüleyicide çalışmadığı için bana yardım etti ... teşekkürler
raj gupta

1
Bu, makinenin donduğu veya kaybolduğu durumlarda veya uygulama herhangi bir girdiye yanıt vermediğinde çalışmaz
Daniel Alder

11

Sadece yazın exitveya logout(daha sonra Enter tuşuna basın) her ikisi de çalışır.


4

Bunlar, ssh ile oynayabileceğiniz çeşitli seçenekler sunan desteklenen karakterlerdir.

Desteklenen kaçış dizileri:

 ~.  - 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

(Çıkışların yalnızca bir satırsonundan hemen sonra tanındığını unutmayın.) Escape dizilerinin listesini vurarak kapatabilirsiniz Enter.


3

logoutKonsol satırına yazabilirsiniz (ve Entertabiki isabet ).


1

MacOS : ssh askıda kaldığında şu sırayı kullan:

ENTER 
SHIFT+`
.

burada: shift + ` ~ (tilde karakteri) üretir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.