SSH Config - 複数プロキシ設定


3

私は自分のSSHプロキシ設定を管理する簡単な方法を試してみたいと思っています。私はよく3つの異なる場所から私のサーバーにSSH接続したいと思います - 2つの場所それぞれが外部にアクセスするためにcorkscrewを使う必要があるプロキシサーバーを持っています。 。どのProxyCommandを使用するかを認識するように〜/ .ssh / configファイルを設定する方法はありますか?私がこれをしたいのは、私がFetchmailをSSH経由で私のサーバーをトンネリングするように設定したいからです(crontabを使って)。そしてどのネットワークに接続してもこの動作をさせる方法がわかりません。

乾杯。

回答:


2

あなたはあなたの中でホストごとの設定を行うことができます .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

既製のスクリプトがあります ここに 適切なテストとエラーチェックを試してみることをお勧めします。 「その他のトリック」セクションまでスクロールします。


わかりました、しかし、異なるプロキシを介して、毎回同じホストにSSH接続している場合はどうなりますか?どのネットワークを自動化すれば、どのネットワークに接続しているかを自動的に検出できますか? ProxyCommandとホストのエイリアシングはすでに設定されているので、「sshサーバー」に移動して起動することができますが、スクリプト化できるようにこれを自動にする必要があります。自分がやろうとしていることが可能かどうかはわかりません。
NOP

1
ご利用いただけますか Host ex3 と同じ目的地を指している Host ex2 しかしProxyCommandエントリがないのですか?私はこれが自動ではないことを理解しています。
Paul

ええ、それは私がすでに持っているものです。自動的なものは私が欲しいものであるので、それはFetchmailと共にスクリプト化されることができます。
NOP

1
おっと、わかりました。私は逃した自動部分で私の答えを更新しました。
Paul

素晴らしい、それは私が欲しいもののように聞こえます。これをやってみよう。本当にありがとう。 :-)
NOP
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.