for循环给服务器传输公钥。使用ssh-copy-id
时间: 2024-10-20 09:14:07 浏览: 17
当你需要通过SSH协议将本地的公钥自动添加到远程服务器的`~/.ssh/authorized_keys`文件中,以便无密码登录,可以使用Linux命令行工具`ssh-copy-id`。这个工具利用了SSH的安全特性,通过for循环可以快速地批量处理多个服务器。
首先,你需要确保已经在本地生成了SSH密钥对(通常包括私钥和公钥)。如果你还没有,可以在终端里输入`ssh-keygen`来创建。然后,将公钥(默认名为`id_rsa.pub`)的内容复制出来。
假设你有一个包含多台服务器地址的文本文件,如`servers.txt`,每行一个服务器地址,你可以编写一个简单的脚本来遍历这个文件并逐个传送公钥:
```bash
#!/bin/bash
# 检查是否已经安装ssh-copy-id
if ! command -v ssh-copy-id &> /dev/null; then
echo "Please install ssh-copy-id first."
exit 1
fi
# 使用for循环读取服务器列表并传输公钥
while IFS= read -r server; do
echo "Adding public key to $server..."
ssh-copy-id -i ~/.ssh/id_rsa.pub $server
if [ $? -ne 0 ]; then
echo "Failed to copy key to $server"
else
echo "Key copied successfully to $server"
fi
done < servers.txt
阅读全文