如何使用 bash 脚本函数 ssh 到远程主机?

如何使用 bash 脚本函数 ssh 到远程主机?

我是 bash 脚本新手。我想从我的脚本中调用一个函数,该函数将 ssh 到远程计算机(在我的 LAN 上)并运行命令。

到目前为止我有:

function run_ssh_command {
    target_ip=$1
    username=$2
    password=$3
    cmd=$4

    ssh -l ${username} ${target_ip} ${password}
}

我从终端调用该函数,如下所示:

笔记:在我的机器上执行该函数时,我给出 script_name、用户名和密码“真实”值。 “ifconfig”是我想在远程计算机上运行的命令。)

source script_name.sh; run_ssh_command 192.168.X.Y username password ifconfig

结果:运行上述命令将使我进入登录过程的密码提示部分(例如与 ssh 相同)[电子邮件受保护]

问题:我想使用脚本自动处理密码输入。一般来说,解决这个问题的“最佳”方法是什么?

答案1

您可以使用sshpass。但是,这需要您对密码进行硬编码,这通常不安全,因此不建议这样做,但如果您无法使用 RSA 指纹,则可能需要这样做。

用法:

sshpass -p somepassword ssh user@host

如果您拥有远程计算机的 root 访问权限,您绝对应该考虑建立 RSA 密钥。解释了它是如何设置的。

答案2

使用它从脚本运行 ssh:

ssh -i {privateKey} -o StrictHostKeyChecking=no {userName}@{serverIp} "{command}"

例子:

ssh -i privateKey -o StrictHostKeyChecking=no [email protected] "mkdir testFolder"

此命令将从脚本代码创建一个测试文件夹。

相关内容