私は時々ホームネットワークの内部または外部にあるかもしれないラップトップを持っています。ネットワーク内のコンピュータに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