我知道如果两台服务器上都设置了身份验证密钥,那么无需密码即可通过 ssh 连接到另一台服务器。但我想知道是否可以允许来自任何 IP(已知/未知)的用户以最简单的方式无需密码 ssh 访问他们可以保存内容的目录?
我正在寻找 SSH 解决方案而不是 FTP。
答案1
我认为最安全的解决方案是为每台机器生成一个无密码的 SSH 密钥,并将其添加到另一台机器的 authorized_keys 列表中。
在机器 1 上(以登录到另一台服务器的用户身份):
$ ssh-keygen -t rsa
$ ssh-add ~/.ssh/id_rsa
$ cat .ssh/id_rsa.pub
如果 keygen 要求您输入密码,只需按 Enter 即可创建无密码密钥。
在机器 2 上:
~/.ssh/authorized_keys
为您登录的用户创建或编辑。- 添加内容
id_rsa.pub
(确保它是.pub将文件(而不是私钥)添加到文件中。所有内容id_rsa.pub
应放在一行中。
完成后你应该可以从机器 1 上执行此操作:
$ ssh username@machine-2
无需输入密码即可登录。scp/sftp 也是如此。
如果这不起作用,请确保你PubkeyAuthentication yes
的/etc/ssh/sshd_config
答案2
请记住,这是一个严肃的安全风险,因此您肯定希望在受限环境中执行此操作,在受限 shell 下运行或仅针对 chrooted 帐户运行。@Kimvais 对 scponly 的建议是正确的。
在客户端创建一个带有空密码的 .ssh/id_rsa 密钥 - 这将创建一个未加密的私钥。然后将客户端的 .ssh/id_rsa.pub 复制到服务器的 .ssh/authorized_keys 中 - 注意正确的权限!(.ssh 为 0700,.ssh/authorized_keys 为 0600)。
现在您可以通过 ssh/scp/sftp 进入服务器,而无需输入密码。
答案3
您想使用密钥来保证安全,但又想避免写密码,这样怎么样?
答案4
我真的怀疑是否可以避免使用密码和/或密钥进行 SSH 身份验证。原因在于 SSH 本身,它是为了安全外壳访问。考虑切换为 FTP/telnet 作为非安全选项。