如何在远程linux机器上执行命令/脚本? 说我想从盒子a开始在盒子b上开始服务tomcat。
答案 0 :(得分:50)
我猜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不会以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
法语中较老的tuto(由我自己:-)但也可能有用:
http://hornetbzz.developpez.com/tutoriels/debian/ssh/keychain/
答案 1 :(得分:26)
ssh user@machine 'bash -s' < local_script.sh
或者你可以
ssh user@machine "remote command to run"
答案 2 :(得分:2)
答案 3 :(得分:0)
如果您不想处理安全问题并希望在短期内尽可能地使其暴露(也称为“方便”),并且在所有主机上都没有ssh / telnet或密钥生成,你可以和netcat一起破解一个单行。通过网络向目标计算机的端口写入命令,它将运行它。然后,您可以阻止对某些“受信任”用户访问该端口,或将其包装在仅允许某些命令运行的脚本中。并使用低权限用户。
服务器上的 mkfifo /tmp/netfifo; nc -lk 4201 0</tmp/netfifo | bash -e &>/tmp/netfifo
这一个班轮读取你发送到该端口的任何字符串,并将其传输到bash中以便执行。 stderr&amp; stdout被转储回netfifo并通过nc发送回连接主机。
客户端上的远程运行命令:
echo "ls" | nc HOST 4201