我通过 ssh 在多台服务器上工作。我已使用以下脚本自动复制 ssh 身份验证密钥。
唯一的问题是它要求输入远程服务器密码 4 次。
我怎样才能将其改为只询问一次?
#!/usr/bin/env bash
#
# Usage:
# copy-ssh-key.sh example.com
#
echo -e "\n>>> Creating remote .ssh folder"
ssh -t $1 "mkdir ~/.ssh"
echo -e "\n>>> Updating .ssh folder permissions"
ssh -t $1 "chmod 700 ~/.ssh"
echo -e "\n>>> Copying Auth Keys"
cat ~/.ssh/id_rsa.pub | ssh $1 "cat >> ~/.ssh/authorized_keys"
echo -e "\n>>> Updating auth keys permissions"
ssh -t $1 "chmod 600 ~/.ssh/authorized_keys"
答案1
请记住,远程服务器上的 SSH 使用你的 shell(例如bash
)来运行命令。因此这将有效:
echo "\n>>> running commands"
cat ~/.ssh/id_rsa.pub | ssh -t $1 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
(因为之前的命令cat
没有从 STDIN 读取,而是cat
获取输入。)