通过 ssh 执行 cat,通过 ssh 发送文本或文件

通过 ssh 执行 cat,通过 ssh 发送文本或文件

你好,我正在编写一个脚本来自动发送公钥,但我无法通过 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

相关内容