すべての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接続が正しく閉じられることを確認したいと思います。また、「怠惰を増やすためのヒントを求めている」ことにも気づきました。「どうすればもっと効率的になることができるか」と書き留めます。

コメント

  • 直接質問しているのではなく、ctrl+dを複数回押すのはどうですか?
  • @UlrichDangelこれまで使用したことがありませんが、接続をすばやく取り消す簡単な方法。
  • 本当にsshセッションを5〜10レベルの深さでネストしていますか? 'が、sshセッション内のすべてのパケットをそれらのすべてのホストを介してバウンスする複雑なトンネルを作成していることをご存知ですか? sshセッションをネストしないだけで問題を解決できますか?
  • @ jw013いいえ、気づいていませんでしたが、理にかなっています。正直なところ、5〜10レベルは誇張でしたが、"一挙にパテからきれいに抜け出す方法についての私の質問を説明しようとしていました。"

回答

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つの方法は、sshfunctionを作成することです。

 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に戻します。
  • わかりました、わかりました、私の悪いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です