web-dev-qa-db-ja.com

1つのコマンドですべてのSSH接続を終了し、PuTTYを閉じる

すべてのSSH接続を取り消して PuTTY を「ワンショット」で閉じる方法はありますか?私はWindows 7で作業し、PuTTYを使用してさまざまなLinuxホストにSSH接続します。

私が自分で作業している方法の例:

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.

上記に従って、Host8からPuTTYを一度に閉じる方法はありますか?ときどき、最大5〜10のホストの深さを見つけます。 XをクリックしてPuTTYウィンドウを閉じることができることはわかっていますが、exitコマンドを使用してSSH接続が適切に閉じられることを確認したいと思います。また、私は怠惰を増やす方法についてのヒントを求めていることに気づきました。 「どうすればもっと効率的になることができるのか」と書いておくだけです。

20
Banjer

ssh接続終了エスケープシーケンスを使用してみてください。

sshセッションで、~.(チルドドット)を入力します。入力しても文字は表示されませんが、セッションはすぐに終了します。

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

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).
30
George M

押すだけ CtrlD ホールドCtrlキーでログアウトし、ウィンドウが消えるまで「d」を押します。

13
Joe

単にPuTTYを閉じます。 (Alt+F4 デフォルトではIIRCです。)

または、別のホストにジャンプするときに、execを使用してシェルプロセスをsshに置き換えることができます。

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レベルの深さはきれいではありません。そのため、PuTTYまたはssh(〜。)を強制終了することはお勧めしません。これは(何をするかに応じて)サーバー上で孤立したプロセスが発生する可能性があるためです。

「怠け者」を減らしてみてください。 puttysのタイトルバーを右クリックすると、新しいセッションをすばやく開くことができます。 「デフォルト」サーバーがあり、そこから1回のジャンプを受け入れる場合、「重複セッション」機能は非常に役立ちます。特にpubkey認証を使用する場合。

2
MattBianco

もう1つの方法は、functionssh用に作成することです。

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

残念ながら、リモートシステムでの作業が完了すると、接続が閉じられ、コンソールからログアウトされます。

すべてのサーバーでそのような機能を作成する必要があることに注意してください。そうしないと、このハックは機能しません。ところで、いつでも〜/ .bashrcまたは〜/ .whatever_Shell_you_use_rcに関数を置くことができます。

それは、utherの方法に比べて少し汚いハックに見えます。

2
rush

少しスクリプトを作成してもかまわない場合は、これを行うことができます。

スクリプト:myssh.sh

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

Dotコマンドで呼び出します。

$ . myssh [email protected]

1つのレベルを終了する場合:

$ exit

すべて終了する場合:

$ exit 5
2
Moonthief