你好,我正在编写一个脚本来自动发送公钥,但我无法通过 ssh 发送我的文件或变量,无论是通过“echo 或 cat”
答案1
如果您想将文件发送到远程服务器,您可以使用scp
。
来自 man scp:
scp 在网络上的主机之间复制文件。它使用 ssh(1) 进行数据传输,使用与 ssh(1) 相同的身份验证并提供相同的安全性。与 rcp(1) 不同,如果需要进行身份验证,scp 将要求输入密码或密码短语。
基本用法:
scp user@origin:/path/to/file user@target:/path/to/file
假设您想要将 example.txt 从当前目录传输到远程SERVER
同名文件夹中名为 example 的文件夹并以 root 身份进行身份验证:
scp example.txt root@SERVER:/example/example.txt
答案2
对于将公钥传输到远程服务器,有一个专门的实用程序ssh-复制-id。
您将在上面找到可用于自动执行此任务的脚本:
#!/bin/sh
while read server ; do
timeout 10 ssh-copy-id -i <public_key_path> <user>@$server
done < <list_of_servers.txt>
PS :将<>之间的常量替换为你自己的值。
答案3
您可以sshpass
在脚本中使用来访问服务器,而不必每次都输入密码,例如:
sshpass -p 'PASSWORD' ssh USER@SERVER ssh-copy-id USER@SERVER
-f
如果您不想在命令行中写入密码(两种情况下都是明文),也可以将密码写入名为 servers.list 的服务器列表中
for SERVER in $(cat servers.list)
do
sshpass -p 'PASSWORD' ssh USER@$SERVER ssh-copy-id USER@$SERVER
done