【问题标题】:linux execute command remotelylinux远程执行命令
【发布时间】:2011-07-06 23:05:05
【问题描述】:

如何在远程 linux 机器上执行命令/脚本? 说我想从盒子 a 开始在盒子 b 上做服务 tomcat。

【问题讨论】:

    标签: linux command


    【解决方案1】:

    我猜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 之类的地方找到它们。理想情况下,请不要以 root 身份运行 ssh,而是以服务器和客户端双方的特定用户身份运行。

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

    ssh 和 ssh 代理
    人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/

    【讨论】:

      【解决方案2】:

      如果您不想处理安全问题并希望在短期内尽可能将其暴露(也称为“方便”),并且|或在您的所有主机上都没有 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

      【讨论】:

        【解决方案3】:
         ssh user@machine 'bash -s' < local_script.sh
        

        或者你也可以

         ssh user@machine "remote command to run" 
        

        【讨论】:

        • 有没有办法在同一行输入密码?这样我的脚本就不会被提示停止。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-10
        • 2016-12-30
        • 2015-03-29
        相关资源
        最近更新 更多