无需密码即可进行 ssh 访问

无需密码即可进行 ssh 访问

我知道如果两台服务器上都设置了身份验证密钥,那么无需密码即可通过 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 上:

  1. ~/.ssh/authorized_keys为您登录的用户创建或编辑。
  2. 添加内容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 作为非安全选项。

相关内容