すべてのSSH接続を取り消して、 PuTTY は「ワンショット」ですか?私はWindows7で作業しており、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接続が正しく閉じられることを確認したいと思います。また、「怠惰を増やすためのヒントを求めている」ことにも気づきました。「どうすればもっと効率的になることができるか」と書き留めます。
コメント
回答
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).
コメント
- とてもかっこいい!
~.
をエイリアスまたは関数に変換しますか?exitall
のような覚えやすい名前を付けるためだけに、'に質問します。あまりにも多くのこと:)~/.bashrc
でいくつか試してみましたが、-bash: ~.: command not found
を取得しました。bashはそれを文字列と見なします。キーボードから直接来るエスケープシーケンス。 -
ctrl+d
ソリューションも気に入っていますが、これは私の質問に直接答えます。ありがとうございます。 - @Banjerbashは
~.
を認識せず、'はssh
自体によって処理されます。 - @Gilles gotcha、理にかなっています。
- そして'は保証されません。 PuTTYもこれを行います。 CLI
ssh
クライアントは、CLIであるため、この手法が必要です。' PuTTYはGUIアプリケーションであり、GUIでこのようなことを行うためのはるかにユーザーフレンドリーな方法があります。
回答
Ctrl D を押すだけで、Ctrlキーを押しながらログアウトし、ウィンドウが消えるまで「d」を押します。
コメント
- 残念ながら、これは'普遍的に機能しません。エディタまたはその他のフルスクリーンツールを実行しているセッションは、
EOT
を無視する可能性があります。また、bash
でも、コマンドラインの途中でそれを無視します。自分で試してみてください。1文字入力してCtrl-D
を試してください。 - Ctrl + Dは何をしますか?つまり、安全に存在するのか、それとも単にプロセスを強制終了するのですか?
- 安全に終了します。これは、' exit 'と入力してEnterキーを押すのと同じシェルショートカットです。
- 実際に私のもの( windows git bash & ubuntu bash)
logout
を発行します。 - はい、exitはログアウトをsshとしても呼び出すと思います接続はログインセッションではない傾向があります。
回答
PuTTYを閉じるだけです。 ( Alt + F4 デフォルトではIIRC。)
回答
もう1つの方法は、ssh
のfunction
を作成することです。
function ssh(){ /usr/bin/ssh $@ ; exit ; }
残念ながら、リモートシステムでの作業が終了すると、常に接続が閉じられ、コンソールからログアウトされます。
すべてのサーバーでこのような機能を実行する必要があります。そうしないと、このハックは機能しません。 。ところで、関数はいつでも〜/ .bashrcまたは〜/ .whatever_shell_you_use_rcに入れることができます。
他の方法と比較すると、少し汚いハックに見えます。
コメント
-
function
はPOSIXではありません。キーワードを削除するだけで、$@
を引用する必要があります。適切に、またはあなたの引数は単語分割の後に渡されます(悪い)。
回答
または、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(〜。)を強制終了することはお勧めしません。これは、(実行内容によっては)サーバー上のプロセスが孤立する可能性があるためです。
試してみて、少なくすることをお勧めします。」パテのタイトルバーを右クリックすると、新しいセッションをすばやく開くことができます。「デフォルト」サーバーがあり、そこから1回ジャンプする場合は、「セッションの複製」機能が非常に便利です。特にpubkey認証を使用する場合に便利です。
回答
少しスクリプトを作成してもかまわない場合は、これを実行できます。
スクリプト:myssh .sh
#!/bin/bash ssh $1 if [ $? -eq 5 ]; then exit 5 fi
dotコマンドで呼び出す:
$ . myssh [email protected]
必要に応じて1つのレベルを終了します:
$ exit
すべてを終了する場合:
$ exit 5
コメント
- もちろん、sshを実行する可能性のあるすべてのコンピューターにコピーする必要があります。また、' sshというシェル関数を定義する方が簡単ではないでしょうか?これにより、前の期間などを回避できます。
回答
パテターミナルウィンドウでログアウトと入力すると、私:
richard@forevermore:~ > logout
ssh接続を閉じて、Puttyアプリケーションを終了します。
コメント
- あなたは'質問を正しく読んでいないと思います。 OPは
ssh host1
を実行し、次にhost1
からssh host8
を実行します。その時点で、logout
はすでに知っているexit
コマンドと同じことを行います— そしてそれらをhost1
に戻します。 - わかりました、わかりました、私の悪いです。
ctrl+d
を複数回押すのはどうですか?