Is er een manier om alle SSH-verbindingen te verlaten en PuTTY in “één schot”? Ik werk in Windows 7 en gebruik PuTTY naar SSH voor verschillende Linux-hosts.
Een voorbeeld van de manier waarop ik merk dat ik werk:
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.
Zoals hierboven beschreven, is er een manier om in één keer van host8 naar het sluiten van PuTTY te komen? Soms vind ik mezelf tot 5 of 10 hosts diep. Ik realiseer me dat ik op de X kan klikken om het PuTTY-venster te sluiten, maar ik wil er graag voor zorgen dat mijn SSH-verbindingen correct worden afgesloten door het exit-commando te gebruiken. Ik realiseer me ook dat ik “om tips vraag om luiheid te vergroten. Ik zal het gewoon afschrijven als” hoe kan ik efficiënter zijn “.
Opmerkingen
- Niet direct wat je vraagt, maar wat dacht je ervan om meerdere keren op
ctrl+d
te drukken? - @UlrichDangel Ik heb dat nog nooit eerder gebruikt, maar ook een snelle manier om snel uit verbindingen te komen.
- Nest je echt SSH-sessies 5 tot 10 niveaus diep? Realiseer je je dat ‘ een ingewikkelde tunnel creëert die alle pakketten in je SSH-sessie door al die hosts terugstuurt? Kun je het probleem oplossen door simpelweg geen ssh-sessies te nesten?
- @ jw013 Nee, dat realiseerde ik me niet, maar het is logisch. Eerlijk gezegd was 5-10 niveaus overdreven, maar ik probeerde mijn vraag te illustreren over ” hoe je Putty in één klap netjes kunt verlaten. ”
Antwoord
Probeer de ssh
ontsnappingsreeks voor het beëindigen van de verbinding.
In de ssh
sessie, voer je ~.
(tilde punt) in. U zult “de tekens niet zien wanneer u ze typt, maar de sessie wordt onmiddellijk beëindigd.
$ ~. $ Connection to me.myhost.com closed.
Van 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).
Reacties
Answer
Druk gewoon op Ctrl D en het zal je daar uitloggen, Ctrl ingedrukt houden en op “d” drukken totdat het venster verdwijnt.
Opmerkingen
- Helaas werkt dit ‘ niet universeel. Elke sessie met een editor of een ander programma op volledig scherm zal waarschijnlijk
EOT
negeren. En zelfsbash
zal het midden op een opdrachtregel negeren. Probeer het zelf uit: typ een enkele letter en probeerCtrl-D
. - Wat doet Ctrl + D, ik bedoel of het veilig bestaat of het proces doodt?
- Het wordt veilig afgesloten. Het is een shell-snelkoppeling die hetzelfde is als het typen van ‘ exit ‘ en op enter te drukken.
- Eigenlijk de mijne ( windows git bash & ubuntu bash) geven een
logout
. - ja, ik geloof dat exit ook logout aanroept als ssh Verbindingen zijn meestal geen inlogsessies.
Answer
Sluit gewoon PuTTY. ( Alt + F4 standaard IIRC.)
Antwoord
Een andere manier is om function
voor ssh
te maken:
function ssh(){ /usr/bin/ssh $@ ; exit ; }
Helaas zal het ook altijd de verbinding verbreken en uitloggen van de console nadat u klaar bent met werken op het externe systeem.
Merk op dat u een dergelijke functie op al uw servers moet uitvoeren, anders zal deze hack niet werken . Trouwens, je kunt altijd een functie in ~ / .bashrc of ~ / .whatever_shell_you_use_rc plaatsen.
Het ziet er een beetje vuile hack uit in vergelijking met de rest.
Opmerkingen
-
function
is niet POSIX – verwijder gewoon het trefwoord en je moet$@
citeren correct, of uw argumenten worden doorgegeven na woordsplitsing (slecht).
Antwoord
Of u kunt exec
gebruiken om uw shell-proces met ssh
bij het springen naar een andere host:
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.
5 niveaus diep is niet mooi, aangezien het verkeer zal door alle andere servers gaan. Daarom raad ik niet aan om PuTTY of ssh (~.) Gewoon te doden, aangezien dit (afhankelijk van wat je doet) kan resulteren in verweesde processen op de servers.
Het is beter om te proberen en minder te zijn. lui “. Klik met de rechtermuisknop op de titelbalk van de putty om een nieuwe sessie snel te openen. Als je een” standaard “server hebt en 1 sprong daarvan accepteert, is de functie” Dubbele sessie “erg handig. Vooral wanneer je pubkey-authenticatie gebruikt.
Answer
Als je het niet erg vindt om wat scripts te doen, kun je dit doen.
Script: myssh .sh
#!/bin/bash ssh $1 if [ $? -eq 5 ]; then exit 5 fi
Bel met het punt-commando:
$ . myssh [email protected]
Als je wilt verlaat één niveau:
$ exit
Als je alles wilt verlaten:
$ exit 5
Reacties
- Natuurlijk zou je het moeten kopiëren naar elke computer waar je ooit vanaf kunt sshen. Zou het ook niet ‘ zijn om gewoon een shell-functie genaamd ssh te definiëren? Dat zou de voorgaande periode, enz. Vermijden.
Answer
Logout typen in het putty-terminalvenster doet het voor me:
richard@forevermore:~ > logout
Sluit de ssh-verbinding en verlaat de Putty-applicatie.
Reacties
- Ik denk dat je ‘ de vraag niet correct hebt gelezen. OP doet
ssh host1
, en vervolgens, vanhost1
, doetssh host8
. Op dat moment zou eenlogout
hetzelfde doen als hetexit
commando dat ze al kennen – verlaathost8
en plaats ze terug inhost1
. - Oké, ik begrijp het, mijn fout.
~.
in een alias of functie? Gewoon om het een gemakkelijk te onthouden naam te geven, zoalsexitall
. Nu ‘ m vraag ik voor veel te veel :). Ik heb een paar dingen geprobeerd in~/.bashrc
maar krijg-bash: ~.: command not found
. Ik veronderstel dat bash het als een string ziet en niet een escape-reeks die rechtstreeks van het toetsenbord komt.ctrl+d
-oplossing ook leuk, maar dit beantwoordt mijn vraag directer. Bedankt allemaal.~.
nooit, het wordt ‘ afgehandeld doorssh
zelf .ssh
-client heeft deze techniek nodig omdat deze ‘ s CLI. PuTTY is een GUI-applicatie en er zijn veel gebruiksvriendelijkere manieren om dit op een GUI te doen.