自動SSHトンネルの設定方法

自動SSHトンネルの設定方法

私は SSH のリモート転送機能を使用して、リモート ホストの Unix ドメイン ソケットへの接続をexample.comローカル マシンの Unix ドメイン ソケットに転送しています。両方のマシンは Linux を実行しています。コマンドは次のとおりです。

ssh -N -n -R /home/guest/daemon.sock:/var/run/daemon.sock [email protected]

/etc/ssh/ssh_host_rsa_key.pub これを自動化して、マシンが起動するたびにトンネルが自動的に作成されるようにしたいです。ローカル マシンからリモートの にファイルをコピーし、ローカル マシン/home/guest/.ssh/id_rsa.pubの に次の行を追加しました。/etc/ssh/ssh_config

Host example.com User guest IdentityFile /etc/ssh/ssh_host_rsa_key RemoteForward /home/guest/daemon.sock /var/run/daemon.sock

/etc/ssh/sshd_configセキュリティ上の理由から、リモート マシン上のユーザー「guest」をトンネル作成のみに制限し、それ以外は許可しないようにしたいと考えています。そのため、リモート ホストに次の行を追加しました。

match User guest AllowTcpForwarding yes X11Forwarding no AllowAgentForwarding no ForceCommand /bin/false

問題は、ローカル マシンを起動しても何も起こらないことです。何か重要なことを見逃しているはずですが、何が欠けているのかわかりません。何かアイデアはありますか?

答え1

このssh_configファイルは SSH 接続を自動化するためにはまったく何もしません。

それは定義を可能にするためだけに存在するデフォルトオプション– を実行するたびにssh example.com、対応する「ホスト」セクションが検索され、すべてのオプションがコマンド ラインに追加されます。(シェル エイリアスに似ていると言えます。) ユーザーごとのオプションは、~/.ssh/config同じ目的でより一般的に使用されます。

しかし、実際に走るコマンドsshは、たとえば systemd .service ユニット、/etc/init.d スクリプト、または cron ジョブを通じて実行されます。(ネットワークが構成された後にサービスを起動する必要があることをサービス内で定義することを忘れないでください。)

(あなた5月ssh_configを使い続けるが、ここでは役に立たず、通常接続がexample.com煩わしくなります。代わりに、同じオプションをサービス ファイルに直接指定するだけです。


違法ではありませんが、クライアント側の認証にホスト キーを再利用するのは少し奇妙です。 を使用して専用のキー ペアを生成する方がよいでしょうssh-keygen

また、@Paul がコメントで指摘したように、信頼できるキーをリストする必要がありますauthorized_keys。SSH サーバーはどのid_*ファイルについても気にしません。

関連情報