scp 或 ssh 带密码

scp 或 ssh 带密码

我想使用脚本将文件从一台服务器发送到另一台服务器。我有密码,但如何将密码传递给脚本。我使用的是 Solaris 5.10

答案1

不建议在脚本中使用密码。相反,您可以使用 ssh 密钥允许无需密码即可登录。

在运行脚本的机器上,运行ssh-keygen以生成密钥文件。您可以对所有问题按回车键,默认设置即可正常工作。获得密钥文件后,您可以使用 .key 文件将其复制到其他服务器ssh-copy-id other.server。这将正确安装文件,以便您可以登录。ssh-copy-id将要求输入密码。如果您现在尝试连接sshscp连接到其他服务器,它应该不再需要密码。

如果您仍然觉得在脚本中输入密码是唯一的选择(事实并非如此,您也不应该这样做),您可以编写一个脚本来在提示输入expect密码时输入密码。sshscp

答案2

您可以使用这个期望脚本

#!/usr/bin/expect

set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
#Source File Path
set source [lindex $argv 3]
#Destination Path
set dest [lindex $argv 4]

spawn bash -c "scp $source $user@$ip:$dest"
expect "password:"
send "$password\r"
interact

相关内容