
私は、明らかに自宅のネットワークの内部または外部に時々存在するラップトップを持っています。自分のネットワーク内のマシンに SSH で接続する必要がある場合、接続は非常に簡単です。
localhost $ ssh machinelearning
マシンにアクセスしようとすると外ネットワークから、ルーターに接続し、そこから SSH を実行する必要があります。
localhost $ ssh router.mytotallyuniquedomain.com
router $ ssh machinelearning
後者のコマンドを実行するためのショートカットがあったことを覚えています~/.ssh/config
が、現時点ではそれが何であるか思い出せません。
次のような場合に、複数のホスト名または接続タイプを指定する方法はありますか?
$ ssh machinelearning
machinelearning
SSH は最初にローカル ネットワーク内のホストに接続しようとし、次に を介してトンネル接続を試行します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
。