将身份验证密钥复制到远程服务器的脚本需要输入四次密码

将身份验证密钥复制到远程服务器的脚本需要输入四次密码

我通过 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获取输入。)

相关内容