如何将 ssh-copy-id 与 stdin 一起使用?

如何将 ssh-copy-id 与 stdin 一起使用?

我已经知道还有其他类似的问题,但他们的答案对我没有帮助。其他论坛中的建议是使用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

相关内容