在 Tectia 和 WinSCP SFTP 客户端中验证 SSH 主机密钥

Verifying SSH host key in Tectia and WinSCP SFTP clients

我有两个脚本可以将文件上传到 SFTP 服务器:

sftp2 --identity-key-file=D:\test_ssh2 -B d:\test.txt testUser@xxx.xxx.xxx.xxx
open sftp://testUser@xxx.xxx.xxx.xxx -privatekey=D:\test.ppk -hostkey="ssh-rsa 1536 xxxxxxxxxxxxxxxxxxxxxxxxxxx"

请帮忙解释一下:

  1. 这两个脚本有什么区别?
  2. 为什么第一个脚本不需要任何主机密钥,而第二个脚本需要它?
  3. 我可以在不使用任何主机密钥的情况下使用私钥调用 SFTP 吗?

What is the difference between the two scripts?

第一个是使用 Tectia sftp2.exe 客户端的批处理文件。
第二个是WinSCP脚本文件。


Why the first script doesn't need any host key, while the second script needs it?

大多数 SFTP/SSH 客户端会在第一次连接时提示您验证主机密钥指纹。如果您验证主机密钥,它会被缓存,下次您将不会收到提示。

Tectia sftp2.exe 和 WinSCP 没有区别。

如果您的 Tectia sftp2.exe 脚本按原样运行,您必须在此客户端之前手动验证主机密钥。

虽然您的 WinSCP 脚本包含主机密钥的显式指纹。因此脚本将工作,即使您在 运行 脚本之前没有使用 WinSCP 手动验证主机密钥。建议使用 WinSCP,因为它 makes your script portable(不依赖于隐藏的主机密钥缓存)。但如果您愿意,您可以使用 WinSCP 手动验证主机密钥,就像您对 Tectia 所做的一样。


Can I call SFTP with private key without using any hostkey?

私钥与主机密钥无关。所以这个问题意义不大。请参阅 SSH key pairs 上的 WinSCP 文章以了解。