ssh_config:ログイン時にリモートマシンで実行されるコマンドを指定します


16

これは私の以前の質問の拡張です。sshログイン時に、リモートマシンでローカルに保存されたコマンド(つまりmount /home)を実行する必要があります。現時点では、私は使用しています:

ssh -t mymachine.example.com 'mount /home ; /bin/bash'

これは問題なく動作しますが、.ssh/config毎回入力する必要がないように、このコマンドを自分に入れることができるかどうか疑問に思っていました。LocalCommandオプションを見つけましたが、オプションが表示されませんRemoteCommand

command-to-be-executed暗号化されたディスクを開くためのパスワードが含まれているため、ローカルマシンに保存することが重要です。これが、.profileリモートマシンでコマンドを入力できない理由です。

回答:


6

この質問は、以前にSuperUserで尋ねられました。最初の答えは要件に合わないリモートファイルを使用しますが、ローカルエイリアスの使用を提案する2番目の答えは問題の解決策になる可能性があります。

暗号化されたディスクを開くためのパスワードが含まれているため、実行するコマンドはローカルマシンに保存することが重要です。これが、リモートマシンの.profileにコマンドを配置できない理由です。

これはおそらく安全ではありません。echoコマンドをsshコマンドとして使用するpsと、リモートサーバーに表示されます。

martin@martin ~ % ssh dev2 "echo hello; ps aux|grep echo"

hello
root     25358  0.0  0.0   5848  1296 ?        Ss   11:27   0:00 bash -c echo hello; ps aux|grep echo
root     25362  0.0  0.0   5012   828 ?        S    11:27   0:00 grep echo

感謝しますが、SuperUserのソリューションで~/.ssh/rcは、リモートマシンに再び保存されます。psコマンドラインパラメータ(パスワードを含む)を表示することについてのコメントについては、気になりません。私が信頼していないのはリモートマシンです。私のローカルマシンは自分だけが使用するため、他の誰もにアクセスできませんps
マーティンベグター

6
そのps出力、リモートマシンからのものです。重要なのはssh、リモートコマンドとして指定するすべてのものが、のリモートサーバーに表示されることpsです。
マーティン・フォン・ウィッティヒ

1
はい、あなたは正しいです。これを指摘してくれてありがとう。
マーティンヴェグター

1
@MartinvonWittich-各SEサイトは独立しているため、その特定のサイトのトピックにある限り、各サイトが同様のQとAを持つことは完全に受け入れられます。Qが表示され、Aが別のSEサイトにある場合は、コンテンツをコピーすることをお勧めします。トピックに合わせて、必要に応じてカスタマイズしてください。
slm

7

これはOpenSSH 7.6で追加されました。

RemoteCommandオプションを追加して、クライアントのコマンドラインでコマンドを指定する代わりに、ssh構成ファイルでコマンドを指定します。これにより、構成ファイルは、リモートホストで実行されるコマンドを指定できます。

参照:https : //www.openssh.com/txt/release-7.6



2

次のように、リモートマシンの協力によりこれを行うことができます。

ローカルマシンで、実行するコマンドを環境変数に詰めますLC_SSH_INITIAL_COMMAND。SSHは通常、フォームのすべての環境変数を渡すように構成されLC_*ます。これは、これらが通常はロケール設定であるためです。

リモートマシン上で、eval "$LC_SSH_INITIAL_COMMAND" キーごとの設定を介して、~/.ssh/authorized_keysまたはそこから実行します~/.ssh/rc~/.ssh/rcファイルがある場合は、xauthX11転送のために手動で実行する必要があることに注意してください)。

このauthorized_keysメソッドを使用すると、SSHセッションが終了したときに同様にコマンドを実行できます(シェルプロセスが突然終了しない限り、少なくとも接続が切断されてもコマンドが実行されるようにHUPシグナルをトラップする必要があります)。

しかし、これはファイルシステムのマウントのようなグローバルなことを行うための良い取り決めではありません。ファイルシステムがすでにマウントされている場合(たとえば、SSHコマンドを同時に実行しているため)、再度マウントしないように注意し、ログアウト時にアンマウントしないようにする必要があります。このユースケースのための私の推薦は、まだあなたは、もはやアクセスそのファイルシステムにしたいとき、何も特別なことをせずにリモートコマンドを実行していない、とアンマウントその後、明示的に取り付けを行うこと。


0

私はそれを試したことはありませんが、アプローチは

  • いくつかのenv変数を読み取ることで、必要なコマンドを実行するSubsystemリモートでsshd_configを宣言します
  • このようなキーをリモートサーバーに渡すSendEnvためにローカルで使用し.ssh/configます
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.