linux远程执行命令

问题描述 投票:0回答:3

如何在远程 Linux 机器上执行命令/脚本? 比如说,我想从 a 框对 b 框执行

service tomcat start

linux command
3个回答
60
投票

我想

ssh
是最好的安全方法,例如:

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

必须根据您的具体需求部署选项(例如,仅绑定到 ipv4),并且您的远程命令可以启动 tomcat 守护进程。

注意
如果您不想在每次 ssh 运行时都提示,请查看 ssh-agent,如果您的系统允许,还可以选择

keychain
。关键是...了解 ssh 密钥交换过程。请仔细查看 ssh_config (即 ssh 客户端配置文件)和 sshd_config (即 ssh 服务器配置文件)。配置文件名取决于您的系统,无论如何您都会在
/etc/sshd_config
之类的地方找到它们。理想情况下,请不要以 root 身份运行 ssh,而是以服务器和客户端上的特定用户身份运行。

源项目主页上的一些额外文档:

ssh 和 ssh-agent
男人 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/


32
投票
 ssh user@machine 'bash -s' < local_script.sh

或者你也可以

 ssh user@machine "remote command to run" 

3
投票

如果您不想处理安全问题并希望在短期内使其尽可能暴露(又名“方便”),并且|或者所有主机上都没有 ssh/telnet 或密钥生成,您可以可以与 netcat 一起破解单行代码。通过网络向目标计算机的端口写入命令,它将运行它。然后,您可以阻止一些“受信任”用户对该端口的访问,或者将其包装在仅允许某些命令运行的脚本中。并使用低权限用户。

在服务器上

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

这个衬垫读取您发送到该端口的任何字符串,并将其通过管道传送到 bash 中执行。 stderr 和 stdout 被转储回 netfifo 并通过 nc 发送回连接主机。

在客户端

要远程运行命令:

echo "ls" | nc HOST 4201

© www.soinside.com 2019 - 2024. All rights reserved.