(1)我想上传一些文件到服务器
for (( i=0 ; i < 23 ; i+=1 )); do
echo mypassword | scp [email protected]:project/$i/train10000/finer_search_c_g ~/project/$i/train10000/
done
我希望通过将我的密码通过管道传输到 scp,循环将在没有交互的情况下执行。但是它仍然要求我手动输入密码。我应该如何将我的密码指定给 scp?
(2) 我没有使用 ssh-keygen 生成的身份验证密钥,因为该服务器实际上是集群的头节点。我发现如果我使用 ssh-keygen 生成身份验证密钥,~/.ssh 下的文件将使节点之间的访问需要密码,我找不到解决方案。是否可以使用空密码进行节点之间的访问,同时使用身份验证密钥从集群外部访问头节点?
感谢致敬!
答案1
使用密钥文件。将私钥文件放在客户端上,并使用 ssh-agent 将密钥文件加载到内存中并解密。将公钥文件放在要访问的每个系统上。
使用身份验证转发在各个主机之间创建连接,而无需提示进行身份验证。
答案2
scp/ssh 将测试输入流以检查它是否是 TTY,如果不是,则将尝试其他方式获取密码,因此普通管道将不起作用(因为管道不是 tty)。
答案3
您需要将公钥复制到您想要连接的系统上的文件 .ssh/authorized_keys 中。