SSH ProxyCommandにかからないようにしてください。

SSH ProxyCommandにかからないようにしてください。

私は次のような行を持っています.ssh/config

Host localhost
ProxyCommand none
Host n0*
ProxyCommand none

Host *
ProxyCommand corkscrew proxy.m.com 80 myserv 443 ~/.ssh/auth

つまり、localhostsshn0*ではプロキシを使用しませんが、他のホストではプロキシを使用します。

何度目が詰まったのに、いつ他の人とつながりたいかわかりました。ローカルマシンただし、プロキシがアクティブなため接続できません。彼らも例外ではありません~/.ssh/config

プロキシを使用するときにコマンドラインに情報を再出力できますか?例えば

$ ssh otherpc
  ---> using  ProxyCommand corkscrew proxy.m.com 80 myserv 443 ~/.ssh/auth
Password: 

私はssh -vこの行(そして他の多くの行)がリストされていることを知っています。

debug1: Executing proxy command: exec corkscrew proxy.m.com 80 myserv 443 ~/.ssh/auth                                                                                                                                        

詰まることを防ぐのに役立つ使用されたプロキシコマンドを表示するためのより簡潔な方法はありますか?たぶんgrepのための賢いbashエイリアス/関数ですかssh -v

警告する:書かないでくださいssh() { ssh -v | grep Proxy}。私も試してみました...偶然フォーク爆撃私:P

答え1

corkscrew-wrapper以下を含む小さなラッパーを作成することをお勧めします。

#!/bin/sh
echo "Executing proxy command corkscrew ..." > /dev/tty
exec corkscrew "$@"

代わりにProxyCommand行で使用してくださいcorkscrew-wrappercorkscrew

または、cronによる実行をサポートするには、at次の機能が必要です。

#!/bin/sh

cmd() { echo "Executing proxy command corkscrew ..."; }

{ cmd > /dev/tty; } 2> /dev/null
[ $? -eq 0 ] || cmd >&2

exec corkscrew "$@"

注:端末は必ずしも標準入力に接続されているわけではないので、可用性を確認するために/dev/ttyこのコマンドを使用しないでください。tty

関連情報