我遇到了一个奇怪的问题,并且只是想弄清楚。
如果我使用 ssh 密钥(无密码身份验证)登录,每次都会出现此错误:
rsanpui@cygwin ~
$ "//DNVM/E920/System920/x86/MyWorld Client Install/install/setup.exe"
-bash: //DNVM/E920/System920/x86/MyWorld Client Install/install/setup.exe: Is a directory
然而,如果我使用密码验证登录到同一台机器,执行远程 exe 时就不会出现这样的错误。
rsanpui@cygwin ~
$ "//DNVM/E920/System920/x86/MyWorld Client Install/install/setup.exe"
我尝试将远程 .ssh/ 文件夹的权限更改为 777,但毫无用处。有人能建议一下吗,我被困住了,因为我们的应用程序应该使用无密码身份验证来执行?
rsanpui@cygwin
我使用以下方法将 ssh 密钥复制到远程机器ssh-copy-id
答案1
您似乎正在尝试访问 SMB 网络共享。问题在于,由于 SSH 服务器在登录时未收到您的密码,因此它不知道在针对该 SMB 文件服务器进行身份验证时要使用什么密码。(SMB才不是就像 NFS 那样,只需相信客户端说“这是 uid 1000”即可。)
当您使用密码验证进行连接时,sshd 会将用户名和密码保存在内存中作为 Windows“登录会话”的一部分。然后,登录密码可用于直接访问 SMB 文件服务器,或用于获取 Kerberos 票证,或用于解密其他存储的凭据。
但是当您使用 SSH 公钥身份验证进行连接时,sshd 不知道您的密码,如果没有密码,Windows 就无法登录 SMB 文件服务器。您需要手动连接到这些服务器,net use '\\DNVM'
并为每个连接提供密码。