将授权密钥复制到远程服务器的脚本需要四次密码

我通过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" 

请记住,远程服务器上的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得到input。)