我打算将一些文件复制到整个 Linux 机器网络,但是当我尝试使用scp
它时要求确认,我需要输入“yes”,然后我必须输入密码。
有没有什么方法可以在不输入“是”并提供密码的情况下执行此操作?
答案1
这里有两个交互。
首先 SSH 要求确认服务器身份。这是必要的,因为对手可能会冒充服务器,诱骗您登录并提供密码或其他机密数据。第一次连接到服务器时,您需要验证主机的身份。此后,SSH 会记住主机名和加密身份之间的关联。
一旦 SSH 确信它正在与目标服务器通信,您需要对您的用户帐户进行身份验证通过提供一些凭据在服务器上。如果您没有设置任何其他内容,系统会要求您输入密码。
为了服务器身份验证,最简单的解决办法就是连接服务器一次从该帐户。验证身份并输入“是”。此决定将被记录下来~/.ssh/known_hosts
,您不会再次被询问。
除了主机名之外,您可能还会被询问 IP 地址。如果服务器使用动态 IP 地址,这会很烦人。由于服务器的 IP 地址已更改这一事实很少引起人们的兴趣,因此通过放入CheckHostIP no
配置文件来禁用 IP 地址验证通常是无害的~/.ssh/config
。
为了用户认证,为了能够无人值守运行,生成一个没有密码的密钥对。在客户端计算机上,运行ssh-keygen
并输入空密码。然后运行ssh-copy-id the-server.example.com
将公钥复制到服务器(此时您需要输入密码,因为这是迄今为止服务器对您进行身份验证的唯一方法)。此后,SSH 将读取密钥文件,并且由于密钥文件没有密码,因此可以使用密钥进行身份验证,而无需任何人为干预。
答案2
是的。事实上,只需首先使用ssh-keygen
和命令在两台通信计算机之间建立无密码 ssh 身份验证ssh-copy-id
。你就可以走了。