我在 *nix 服务器之间设置 SFTP,如下所示:
通过运行以下命令在发送服务器上生成公钥:
[user1@server1] $ /usr/local/bin/ssh-keygen -t rsa -b 1024
然后将“id_dsa.pub”文件复制到
/home/remote_user1/.ssh/authorized_keys
远程机器server2上的文件中。连接到服务器2:
$ sftp remote_user1@server2
然后系统会提示我输入密码一次以完成握手,然后对于所有后续 SFTP 连接,它会直接连接。
但最近另一个团队能够直接连接到我们的服务器而无需初始握手,通常我需要提供remote_user1的握手密码。
那么哪些配置更改(如果有)可能允许在没有密码的情况下完成握手......?任何可以帮助我更好地理解 SFTP 握手过程的链接也会非常有帮助,因为我在这个主题上找不到太多内容。
答案1
我不知道 SSH 中有任何这样的“握手”过程。然而,从您概述的步骤来看,您似乎没有告诉 SSH 使用密钥进行id_dsa
身份验证,这会导致回退到密码身份验证。当您提供密码后,客户端上运行的某些密码或密钥缓存守护程序可能会存储该信息并在后续连接中重用它?
这有可能就是你所看到的吗?
id_dsa
如果是这样,一旦远程服务器知道相应的公钥并且应该允许它用于身份验证,只需告诉 SSH 用于身份验证。
OpenSSH 的手册页显示:
-i identity_file Selects a file from which the identity (private key) for RSA or DSA authentication is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2. (...)
如果 Solaris 是类似的,除非您在运行 ssh-keygen 时位于 ~/.ssh 中,否则 SSH 不知道使用./id_dsa
.
答案2
事实证明,我设置的权限不正确.ssh
,authorized_keys
需要我输入凭据。
~/.ssh
目录可以具有权限700
或755
,但775
其他人不能访问该authorized_keys
文件内容。授予其他人对该文件的写入权限将失去整个安全点。
~/.ssh/authorized_keys
文件可以具有权限400
(仅您可读)或600
(仅您可写)。