(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,循环将在没有交互的情况下执行。但是它仍然要求我手动输入密码。我应该如何将 mypassword 指定给 scp?
(2) 我不使用 ssh-keygen 生成的身份验证密钥,因为服务器实际上是集群的头节点。我发现如果我使用 ssh-keygen 生成身份验证密钥,~/.ssh 下的文件会使节点之间的访问需要密码,我找不到解决方案。是否可以在使用身份验证密钥从集群外部访问头节点时使用空密码进行节点之间的访问?
谢谢并恭祝安康!
使用密钥文件。将私钥文件放在您的客户端上,并使用 ssh-agent 将密钥文件加载到内存中并解密。将公钥文件放在您要访问的每个系统上。
使用身份验证转发在各个主机之间创建连接,而不会提示进行身份验证。
scp/ssh 将测试输入流以检查它是否是 TTY,如果不是,将尝试其他方法来获取密码,因此普通管道将不起作用(因为管道不是 tty)。
您需要将公钥复制到要连接的系统上的 .ssh/authorized_keys 文件中。