※ ChatGPTを利用し、要約された質問です(原文:SSH接続でwindowsサーバのコマンドが実行できません)
SSH接続でWindowsサーバのコマンドが実行できない時の解決方法
このQ&Aのポイント
WindowsサーバのSSH接続でコマンド実行できない問題について解説します。
WindowsサーバにSSH接続してコマンドを実行する方法について詳しく説明します。
Windowsサーバでdirコマンドの引数にファイルを指定する際のエラーについて解決策を提案します。
SSH接続でwindowsサーバのコマンドが実行できません
SSHでwindowsサーバに接続して、OSコマンドを自動実行してクライアントにアウトプットを取得したいと思っておりますがうまくコマンドが実行できません。
以下環境とやりたいことです。
<環境>
Windowsサーバ(ssh server): WindowsXP OpenSSHインストール済み
クライアント(ssh client): WindowsXP
※Windowsサーバとクライアントは公開鍵認証でパスワードなしでsshコマンドでクライアントからサーバにログインできるようになっています。
<やりたいこと>
クライアントからsshで定期的にWindowsサーバログインしてサーバ上のファイル情報を取得したいので、以下のようなコマンドとクライアントから定期実行しようと考えてます。
例:
ssh -i id_dsa username@server dir
しかし、sshで一度サーバにログインしてからだと普通どおりにコマンド実行できるのですが、sshでコマンドを渡す場合には、c:\windows\system32\command.comを記述する必要があるようで、実際には、
ssh -i id_dsa username@server c:/windows/system32/command.com dir のように指定しています。
ここからが質問です。
Q.このとき、dirコマンドの引数にファイルを指定しても、"ファイルが見つかりません"のエラーになってしまいます。
コマンド例:
ssh -i id_dsa username@server c:/windows/system32/command.com dir filename
出力例:
--------------------------------------------------
ドライブ C: のボリュームラベルは XXXXXX
ボリュームシリアル番号は XXXXX
ディレクトリは XXXXXX
ファイルが見つかりません.
---------------------------------------------------
SSHサーバがLinux/Unixの場合は特に問題なくコマンドが実行できたのですが、Windowsの場合にはどのようにコマンドを指定すればよいのでしょうか?
よろしくお願いします。
お礼
私のdirコマンドの引数でのファイルの指定方法に問題があったようです。 以下のようにdirコマンド後のファイル指定で\を3つ続けて\\\にしてみたところうまく動作しました。 <例> C:\\\directory1\\\filename sshで指定する際の特殊文字の解釈の問題だったようです。 最終的にはこのような指定になりました。 ssh -i id_dsa user@sshserver c:/windows/system32/cmd.exe /c dir c:\\\directory\\\filename この方法でうまくいきそうですのでテストしてみます。 どうもありがとうございました。
補足
回答ありがとうございました。まったく見当がつかずに困っていたのですが前進しました。 テストしているWindowsのOpenSSHではWindowsのsshサーバに接続した場合でもカレントディレクトリは接続したユーザのホームディレクトリになります。(実際には"HKEY_LOCAL_MACHINE\SOFTWARE\Cyguns Solutions\Cygwin\mount v2\/home"で指定されたディレクトリに作成される各ユーザディレクトリです。) ここに教えて頂いたように"一連の操作(カレントドライブ、カレントディレクトリの変更、dirコマンドの実行)をするbatファイルを作成して、そのbatファイルをフルパスで指定してみる" という手順で動作いたしました。 <例> ssh -i id_dsa user@sshsever "c:/windows/system32/cmd.exe /c c:/user/test.bat ※test.batの中にdirコマンドとファイル名を記述 しかし、sshクライアントから実行されるコマンドは変更される可能性があるため、本当はWindowsのsshサーバ上にはこのようなファイルを作成して予め配置しなくても実行できるようにしたいと考えています。 Windowsの制限であれば仕方ないのですが、なにかよい方法がございましたらご教授ください。