複数の SSH ホスト エイリアスを持つことは可能ですか?

複数の SSH ホスト エイリアスを持つことは可能ですか?

私は、明らかに自宅のネットワークの内部または外部に時々存在するラップトップを持っています。自分のネットワーク内のマシンに SSH で接続する必要がある場合、接続は非常に簡単です。

localhost $ ssh machinelearning

マシンにアクセスしようとするとネットワークから、ルーターに接続し、そこから SSH を実行する必要があります。

localhost $ ssh router.mytotallyuniquedomain.com
router $ ssh machinelearning

後者のコマンドを実行するためのショートカットがあったことを覚えています~/.ssh/configが、現時点ではそれが何であるか思い出せません。

次のような場合に、複数のホスト名または接続タイプを指定する方法はありますか?

$ ssh machinelearning

machinelearningSSH は最初にローカル ネットワーク内のホストに接続しようとし、次に を介してトンネル接続を試行しますrouter.mytotallyuniquedomain.comが、長いホスト名を入力する必要はありませんか?

答え1

方法 1 - ProxyCommand と netcat

私はこれを容易にするためにこの設定を使用します$HOME/.ssh/config:

Host intserver1-o intserver2-o intserver3-o
    ProxyCommand ssh [email protected] nc `echo %h|sed 's/-o//'` %p

どこからでもこの内部サーバーにアクセスできますssh intserver2-o。自宅の LAN では を使用しますssh intserver1

注記:上記のトリックncでは、extserver1 に netcat ( ) がインストールされている必要があります。

方法 2 - ネストされた SSH

あるいは、この方法も使用できます:

$ ssh -t -l gatewayuser gatewayserver "ssh -l serveruser internalserver"

基本的に、このメソッドでは SSH 呼び出しをネストします。

方法 3 - ProxyCommand と ssh -W

新しいバージョンの SSH (5.4 以降) では、スイッチ経由sshの代わりにを使用できます。nc-W

Host TARGETHOST
ProxyCommand ssh -W %h:%p PROXYHOST

&%h%p、 に使用されたホスト名ポートのマクロですTARGETHOST

関連情報