AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 38023
In Process

        2 revs, 2 users 61%anon
2 revs, 2 users 61%anon
Asked: 2009-07-09 13:53:16 +0800 CST2009-07-09 13:53:16 +0800 CST 2009-07-09 13:53:16 +0800 CST

SSH 和重定向

  • 772

考虑以下命令:

ssh aristotle sudo /bin/sh < test.sh

我希望重定向适用,/bin/sh但它被 sudo 使用。关于如何实现我想要的任何想法?

bash ssh
  • 6 6 个回答
  • 1456 Views

6 个回答

  • Voted
  1. edoloughlin
    2009-07-09T15:29:25+08:002009-07-09T15:29:25+08:00

    为什么不直接复制 test.sh 然后调用它呢?

    scp test.sh aristotle:/tmp/test.$$.sh
    ssh aristotle sudo /bin/sh /tmp/test.$$.sh
    ssh aristotle rm /tmp/test.$$.sh
    

    $$ 是本地计算机上进程的 PID,提供一定程度的随机性,因此您的文件不会被破坏。

    • 1
  2. Nils Toedtmann
    2014-12-28T10:04:55+08:002014-12-28T10:04:55+08:00

    重定向正在使用 ssh 和 sudo!它只会干扰来自 ssh 和/或 sudo 的任何密码对话框。

    因此,您不使用重定向,而是使用解决方法,例如首先将脚本复制到目标机器然后执行它(例如@edoloughlin建议的)。

    或者您将 ssh 和 sudo 配置为不提示输入密码。然后它就像一个魅力:

    $ echo "hostname" | ssh -A orwell sudo /bin/sh
    orwell
    

    有成千上万的howtos解释如何使用ssh无密码,所以我不解释那部分。至于 sudo,有几种方法可以无密码地使用它。@jtimberman建议一般允许有问题的用户无密码 sudo(通过 sudo 的NOPASSWD功能,请参阅sudoers(5))。

    我个人使用 PAM 模块pam-ssh-agent。它允许 sudo 针对转发的 ssh 代理进行身份验证,并且只有在没有 ssh 代理可用时才回退到基于密码的身份验证。仅在 Debian 和 Ubuntu 上

    apt-get install pam-ssh-agent-auth
    

    然后按照pam_ssh_agent_auth(8)中的说明进行配置。

    • 1
  3. joshudson
    2009-07-09T14:13:45+08:002009-07-09T14:13:45+08:00

    试试这个方法:

    ssh aristotle sudo /bin/sh -c "/bin/sh \\< test.sh"
    
    • 0
  4. Bill Weiss
    2009-07-09T18:17:21+08:002009-07-09T18:17:21+08:00
    houdini@www ~ % sudo "echo foo >> ~houdini/foo.$$"
    sudo: echo foo >> ~houdini/foo.30055: command not found
    houdini@www ~ % ls ~houdini/foo*
    zsh: no matches found: ~houdini/foo*
    houdini@www ~ % sudo -s "echo foo >> ~houdini/foo.$$"
    houdini@www ~ % ls ~houdini/foo*
    -rw------- 1 root root 4 Jul  8 20:16 /home/houdini/foo.30055
    houdini@www ~ % sudo -i "echo foo >> ~houdini/foo.$$"
    houdini@www ~ % ls ~houdini/foo*
    -rw------- 1 root root 8 Jul  8 20:17 /home/houdini/foo.30055
    
    • 0
  5. Zanchey
    2009-07-09T20:20:42+08:002009-07-09T20:20:42+08:00

    我使用ssh somehost sudo cat \< /etc/passwd了一些成功;尝试类似:

    ssh aristotle sudo /bin/sh \< test.sh

    • 0
  6. jtimberman
    2009-07-10T01:11:14+08:002009-07-10T01:11:14+08:00

    很可能,sudo 正在提示输入密码并试图从您的 test.sh 脚本中获取密码。

    有两种解决方案。

    首先,您可以在目标系统上为您的用户 ID 分配 NOPASSWD。

     your_username ALL=(ALL) NOPASSWD: ALL
    

    或者第二个,你可以 ssh 到系统并为 sudo 提供密码,然后再次运行它并

    $ echo "your_password" | ssh remote_host sudo -l
    your_username@remote_host's password:
    [sudo] password for your_username: 
    User your_username may run the following commands on this host:
        (ALL) ALL
    $ ssh remote_host sudo /bin/bash < test.sh
    remote_host.example.com
    

    当然,您需要对出现在 shell 历史记录中的密码采取预防措施(例如将其放入只有您有权访问的文件中,然后通过 cat 或类似方法从该文件中获取值)。

    我非常喜欢前者,仅使用基于 SSH 密钥的身份验证,根本没有密码,并且私钥位于一个系统上:我的笔记本电脑(受 16 个以上字符的密码保护)。

    我的 test.sh 的内容:

    #!/bin/sh
    hostname -f
    
    • 0

相关问题

  • Windows SSH 客户端

  • 在 Windows Server 2003 上通过 SSH 启动和停止 Mongrel 服务

  • 隧道 Xbox 网络流量 [关闭]

  • 在 .bashrc 中设置环境变量的最佳方法是什么?

  • 为什么使用authorized_keys通过ssh自动登录不起作用?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve