web-dev-qa-db-ja.com

linuxコマンドをリモートで実行する

リモートのLinuxボックスでコマンド/スクリプトを実行するにはどうすればよいですか?ボックスaからボックスbでTomcatのサービスを開始したいとします。

36
user121196

sshがこのための最も安全な方法だと思います。例えば:

ssh -OPTIONS -p SSH_PORT user@remote_server "remote_command1; remote_command2; remote_script.sh"  

oPTIONSは、特定のニーズ(たとえば、ipv4へのバインドのみ)に従って展開する必要があり、リモートコマンドがTomcatデーモンを起動している可能性があります。


sshの実行ごとにプロンプ​​トを表示したくない場合は、ssh-agentを確認してください。システムで許可されている場合は、オプションでkeychainも確認してください。鍵は... ssh鍵交換プロセスを理解することです。 ssh_config(つまり、sshクライアントの構成ファイル)とsshd_config(つまり、sshサーバーの構成ファイル)を注意深く見てください。構成ファイル名はシステムに依存しますが、とにかく/etc/sshd_config。理想的には、plsは明らかにルートとしてsshを実行するのではなく、サーバーとクライアントの両側の特定のユーザーとして実行します。

ソースプロジェクトのメインページに関する追加ドキュメント:

sshおよびssh-agent
man ssh

http://www.snailbook.com/index.html
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

キーチェーン
http://www.gentoo.org/doc/en/keychain-guide.xml
フランス語の古いチュート(自分で:-)ですが、役に立つかもしれません:
http://hornetbzz.developpez.com/tutoriels/debian/ssh/keychain/

52
hornetbzz
 ssh user@machine 'bash -s' < local_script.sh

またはあなたはちょうどすることができます

 ssh user@machine "remote command to run" 
27
Orbit

この記事はよく説明していると思います:

リモートLinux/UNIXホストでのコマンドの実行

Google はあなたの親友です;-)

1
Jerry Tian

セキュリティを扱いたくなく、短期間にできるだけ公開(別名「便利」)にしたい場合や、すべてのホストでssh/telnetまたはキー生成を使用したくない場合は、次のことができます。 netcatと一緒にワンライナーをハックします。ネットワークを介してターゲットコンピューターのポートにコマンドを書き込むと、コマンドが実行されます。その後、少数の「信頼できる」ユーザーへのそのポートへのアクセスをブロックするか、特定のコマンドの実行のみを許可するスクリプトでラップすることができます。そして、権限の低いユーザーを使用します。

サーバー上

mkfifo /tmp/netfifo; nc -lk 4201 0</tmp/netfifo | bash -e &>/tmp/netfifo

この1つのライナーは、そのポートに送信した文字列を読み取り、それをbashにパイプして実行します。 stderrとstdoutはnetfifoにダンプされ、ncを介して接続ホストに送信されます。

クライアントで

コマンドをリモートで実行するには:echo "ls" | nc Host 4201

0
Beracah