Linux scp 自动输入密码:无需 SSH 密钥、sshpass 或 expect
有几种方法可以实现在 Linux 中使用 scp 自动输入密码,而不使用 ssh 密钥、sshpass 和 expect。
-
使用 ssh 密钥代理:在本地机器上生成一个 ssh 密钥对,并将公钥添加到远程机器的' ~/.ssh/authorized_keys' 文件中。然后使用' ssh-agent' 来管理 ssh 密钥,并将私钥添加到代理中。这样,当使用 scp 时,ssh 将自动使用代理中的密钥进行身份验证,而不需要手动输入密码。
首先,生成 ssh 密钥对:
ssh-keygen -t rsa然后,在本地机器上启动 ssh-agent 并添加私钥到代理:
eval `ssh-agent` ssh-add ~/.ssh/id_rsa最后,使用 scp 命令进行文件传输时,ssh 将自动使用代理中的密钥进行身份验证:
scp file.txt remote_user@remote_host:/path/to/destination/ -
使用 sshpass 和环境变量:将密码存储在环境变量中,并使用 sshpass 命令将密码传递给 scp 命令。
首先,将密码存储在环境变量中:
export SSHPASS=your_password然后,使用 sshpass 命令将密码传递给 scp 命令:
sshpass -e scp file.txt remote_user@remote_host:/path/to/destination/请注意,使用 sshpass 会将密码以明文形式存储在环境变量中,这可能会带来一些安全风险。
-
使用 SSH 控制台输入重定向:使用 ssh 命令与 scp 命令结合使用,并使用输入重定向将密码传递给 ssh 命令。
ssh remote_user@remote_host 'scp file.txt remote_user@remote_host:/path/to/destination/' < password.txt在这种方法中,将密码存储在一个文件(例如 password.txt)中,并使用输入重定向将密码传递给 ssh 命令。
请注意,这些方法都有一定的安全风险,请根据实际情况选择合适的方法并确保适当的安全措施。
原文地址: https://www.cveoy.top/t/topic/pj1y 著作权归作者所有。请勿转载和采集!