
私は 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_*
ファイルについても気にしません。