如何在 Linux 机器上传输/执行远程 Unix 服务器上的脚本

如何在 Linux 机器上传输/执行远程 Unix 服务器上的脚本

我正在尝试部署一个可执行文件并从 Linux 在远程 Unix 计算机(Linux/Solaris)上执行它,而无需手动输入密码。

我尝试使用 scp 和 SSH key-gen 实用程序与远程服务器交互,但无论哪种方式,我都无法避免手动提供密码。由于我需要从 Java 代码运行此命令/实用程序,因此我应该完全避免在运行时提示输入密码。我在 Google 上搜索了很多主题,但没有任何结果。

我怎样才能做到这一点?

答案1

您应该使用公钥/私钥对设置身份验证,正如您之前提到的那样,您使用 生成了ssh-keygen。如果您需要在自动脚本中使用它,请在私钥上生成不带密码的密钥。现在,只需使用 复制公钥即可ssh-copy-id name@host在远程端正确设置它(授权公钥)。

我建议你按照以下教程进行操作这个

如果ssh有效,则scp同样有效。

正确设置后,您应该能够在无需交互的情况下执行此操作:

scp myscript.sh name@remotehost:~/
ssh name@remotehost ~/myscript.sh

为了避免输入密码或密码短语,有几种选择

  • 使用身份验证代理保存私钥的密码/密码短语
  • 不要使用任何密码来保护私钥

前者适合交互式使用,后者不太安全。你可能需要为此设置一个新的用户 ID,并在远端赋予最小权限(例如 chrooted)

答案2

答案3

步骤 0. 您必须具有远程机器的 ssh 访问权限。

步骤 1. 在您的 Linux 机器上生成 RSA 私钥/公钥对,ssh-keygen并将其放在某个位置(例如 /root/identities)。不提供密码。

第2步。ssh-copy-id -i /root/identities/your.key [email protected]

步骤 3. 就是这样。现在您可以了ssh -i /root/identities/your.key user@remotemachine your_command,并且不会提示密码。当然,您必须PubkeyAuthentication = yes在远程机器上sshd_config

相关内容