あなたはあなたの中でホストごとの設定を行うことができます .ssh/config
:
Host ex1
HostName proxied.example.com
User myuser
ProxyCommand /usr/local/bin/corkscrew proxy.example.com 8080 %h %p
Host ex2
HostName nonproxy.example.com
User myuser
IdentityFile id_rsa
そう
SSH EX1
にするだろう proxied.example.com
そしてコルク栓抜きプロキシを呼び出します。
SSH EX2
にするだろう nonproxy.example.com
あなたのIDファイルを使用してください。 .ssh
フォルダ。
自動検出
コルク栓抜きプロキシが行うことは、ローカルプロキシを介した接続を作成し、sshが接続を通過するためのstandard-inの入力を受け付けます。リモートsshサーバーになんらかの方法で接続し、標準の入力を受け入れるならば、ProxyCommandとして何でも使用できます。
たとえば、netcatを使用してリモートホストへの接続を確立し、sshはstandard-inを介してnetcatと通信します。
ProxyCommand nc %h %p
このプロキシコマンドでサーバにSSH接続すると、sshはポート22でリモートホストにTCP接続するためにncを呼び出し、次にsshはncの標準入力を通してコマンドを送信します。
scの代わりにncにtcpセッションを確立させても何も得られません。たとえば、 "proxytest"と呼ばれるラッパースクリプトを作成することができます。それは、ncを使用して直接接続を確立できるかどうかをテストし、それ以外の場合はcorkscrewを使用しようとしたものです。
if nc -z $1 $2; then
exec nc $1 $2 # try to connect directly
else
exec corkscrew $3 $4 $1 $2 # set up proxy connection
それで、これらのどちらかがうまくいったら、sshが接続に使うことができる標準入力があるでしょう - netcatからのものかcorkscrewからのもののどちらかです。だからあなたのSSH設定は持っているでしょう:
ProxyCommand proxytest %h %p proxy.example.com 8080
既製のスクリプトがあります ここに 適切なテストとエラーチェックを試してみることをお勧めします。 「その他のトリック」セクションまでスクロールします。