.ssh / configで複数のHostName / Portの組み合わせを指定する方法


10

中央サーバー上の複数のMercurialリポジトリからプルおよびプッシュする複数のノートブックおよびワークステーションを持っています。私は通常.ssh/config、エイリアスを設定するために使用します:

Host repo-server
HostName server.somedomain
User user143
IdentityOnly yes
IdentityFile ~/hgkey
Port 156

...といくつかのオプション、あなたはアイデアを得ます。その後hg push ssh://repo-server//hgroot/someproject、すべてのローカルリポジトリで単にを実行し、サーバーのアドレスとポートを1か所で変更できます。

ワークステーションの場合、これは正常に機能しますが、ノートブックは、ネットワークの内部または外部から、別のアドレスと別のポートを使用してサーバーにアクセスできます。SSHが自動的に順番に試行するように、複数のHostName / Portの組み合わせを指定できる方法はありますか?このようにして、ユーザーは正しいアドレスを気にすることなくプッシュおよびプルできます。

(もちろん、VPNを使用するのが最も正しいソリューションです)

回答:


5

SSHでは不可能です。

ProxyCommandノートブックの接続方法/場所に応じて、snet のオプションと(netcatを使用して)サーバーへのTCP接続を作成するカスタムスクリプトを使用して、これを回避できます。以下の線に沿った何か:

#!/bin/bash
SSID=$(/sbin/iwgetid wlan0 -r)

case "$SSID" in
net1)
  nc <host1> <port1>
  ;;
net2)
  nc <host2> <port2>
  ;;
*)
  nc <host3> <port3>
  ;;
esac

次に、で.ssh/config、次のものが必要になります。

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script

HostName次に、エントリを変更するスクリプトを作成します。ありがとうございました。
leoluk

これはLinux固有に見えます。たとえば、/ sbin / iwgetidはWSLに存在しないようです...
Michael

-1

別の方法としては、「正しい」IPのsshポート22をラップトップの未使用のローカルポートに転送し、そこでsshするスクリプトを設定することもできます。私はそれをかなり多くの状況で使用します。


1
これは例がなければまったく明確ではありません。
Andrew Schulman、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.