我已经知道还有其他类似的问题,但他们的答案对我没有帮助。其他论坛中的建议是使用sshpass
或预安装 ssh 密钥,但我无法使用sshpass
也无法在系统中预安装 ssh 密钥。
我想使用 stdin inssh-copy-id
或其他方法将我的 ssh 密钥复制到远程服务器,我可以使用 .stdin 通过 stdin 传递密码echo
。
像这样的东西:
echo -e "1234" | ssh [email protected] "echo "my_key" >> ~/.ssh/authorized_keys"
这是在 CentOS 系统上。
答案1
SSH_ASKPASS
您可以为此使用该变量。
连接.sh
#!/bin/bash
pwd="mypassword"
if [ ! -t 1 ]; then
# The output is not going to stdout, assume the invoke is from SSH_ASKPASS
printf "%s\n" "$pwd"
exit 0
fi
# SSH_ASKPASS will be used only if DISPLAY is defined
export DISPLAY=:0
# Set the SSH_ASKPASS program to THIS script+
export SSH_ASKPASS="$0"
# setsid is required (Run a program in a new session)
setsid ssh-copy-id user@localhost