【问题标题】:Unix SSH without password无密码的 Unix SSH
【发布时间】:2013-09-28 20:42:02
【问题描述】:

大家好,我是 Unix 的新手,我需要编写一个“shell 脚本”(?)来连接到另一个终端并运行一些 SQL 查询。我到底该怎么做?我一直在浏览这个和其他板上的一些答案,如果我找到了我的答案,我不明白。

我可以手动连接、输入密码等,但我需要自动化这个过程。我无权访问 Perl(正如一些答案所建议的那样),我无法编辑 etc/shadow 文件。所以我认为这必须严格通过 Unix 本身来完成。这是我目前使用的:

X=`vUser='USER-NAME'
vPass='PASSWORD'
vTable='TABLENAME'

vHOST='HOST-NAME'

vPORT=4443

ssh root@vHost
expect {
    "root@the-host password:"{
        send -s "'vPass'\r"
    }
}

SQL_Query='select * from vTable limit 10'

mysql -p$vPASS -D$vTable -u$vUser P$vPort<<EOF 

$SQL_Query
EOF`
echo $X>Output.dat

请完整解释所有答案。我正在努力学习。

【问题讨论】:

  • 您可能只想创建一个无密码的 SSH 密钥对:linuxconfig.org/passwordless-ssh 但是请注意,您的脚本似乎是以 root 身份连接到远程计算机。你真的不应该这样做,而且你尤其是不应该使用无密码密钥对来这样做。
  • 是的。在这种情况下,您不应使用密码。您还可以在接受的答案中找到创建 SSH 密钥here 的方法。
  • 通常认为通过 ssh 禁用 root 访问是一种好习惯。

标签: mysql shell unix ssh passwords


【解决方案1】:

可能不是 100% 相关,但我必须在 Linux 上做同样的事情。

首先,您想在具有 SSH 访问权限的另一台服务器上创建一个新用户帐户并生成一个 SSH 密钥对,
即使您要以 root 身份执行此操作,
密钥对也远远优于标准密码,因为它们更强大,
并且它们允许您通过 SSH 自动登录。

没有真正的方法可以自动化密码输入过程(至少在 Linux 上没有),因此需要 SSH 密钥来执行此操作。

您基本上可以将命令链作为参数发送到 SSH 工具。
像这样,
ssh user@host "ls; cat *; yes;"
希望对您有所帮助。

【讨论】:

    【解决方案2】:

    试试这个:

    1. 将您的 SSH public 密钥复制到剪贴板(cat ~/.ssh/id_rsa.pub 的输出)。如果您没有 SSH 密钥对,请使用 this tutorial 生成它。
    2. 将您的 public 密钥粘贴到服务器的 ~/.ssh/authorized_keys 文件中。如果没有,请使用nano ~/.ssh/authorized_keys 创建并粘贴到那里。
    3. 在您的计算机中,您可以使用以下命令在服务器中运行脚本:

      ssh user@server_ip 'bash -s' < local_script.sh
      

      或者,如果你有一个命令要运行,那么就可以了:

      ssh user@server_ip "echo Test | tee output.log"
      
    4. 如果您不喜欢 SSH 一直要求您输入密码,请使用 ssh-agent

    对于特定于 SQL 的脚本,您可以将所有 SQL 命令放在一个文件中,例如 query.sql。您应该将query.sql 复制到您的服务器(scp query.sql user@server_ip:~/)然后运行

    ssh user@server_ip "mysql -uyourusername -pyourpassword < query.sql | tee output.log"
    

    输出将保存在output.log。也检查this answer

    【讨论】:

      【解决方案3】:

      有一个 Linux 命令 ssh-copy-id 会为您执行此操作,它也可以作为自制公式提供给 Mac。

      【讨论】:

        猜你喜欢
        • 2014-01-06
        • 1970-01-01
        • 2022-11-06
        • 1970-01-01
        • 2014-11-26
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        相关资源
        最近更新 更多