我知道,如果在两台服务器上都设置了authentication密钥,则可以在没有密码的情况下ssh到另一台服务器。 但是我想知道是否可以允许来自任何IP(已知/未知)的用户使用无密码的ssh访问目录,以便以最简单的方式保存其内容。
我正在寻找SSH解决scheme,而不是FTP。
我想说的最安全的解决scheme是为每台机器生成一个无密码的SSH密钥,并将其添加到另一个的authorized_keys列表中。
在机器1上(作为login到其他服务器的用户):
$ ssh-keygen -t rsa $ ssh-add ~/.ssh/id_rsa $ cat .ssh/id_rsa.pub
如果keygen要求您input密码,只需按回车即可创build一个无密码的密钥。
在机器2上:
~/.ssh/authorized_keys 。 id_rsa.pub的内容添加到文件中(确保它是.pub文件,而不是私钥)。 所有的id_rsa.pub都应该放在一行上。 当这样做完成后,你应该可以从机器1做到这一点:
$ ssh username@machine-2
只需login即可,无需input密码。 同样适用于scp / sftp。
如果这不起作用,请确保在/etc/ssh/sshd_config有PubkeyAuthentication yes
请记住,这是一个严重的安全风险,所以您一定要在受限制的环境下运行,只能在受限制的shell或chroot账户下运行。 @Kimvais的build议是正确的。
在客户端创build一个带有空密码的.ssh / id_rsa密钥 – 这将创build一个未encryption的私钥。 然后将.ssh / id_rsa.pub从客户端复制到服务器的.ssh / authorized_keys中 – 注意正确的权限! (0700为.ssh,0600为.ssh / authorized_keys)。
现在你可以在服务器上inputssh / scp / sftp来input密码。
你想使用密钥来保持安全,但避免写密码这样的事情呢?
如果这是openssh,则可以在/ etc / ssh / sshd_config中设置“PermitEmptyPasswords yes”
我想你只想让scp,所以你可能设置scponly作为用户的shell。
此外,不要允许从互联网访问:)
我真的怀疑有可能避免使用SSH身份validation的密码和/或密钥。 原因是SSH本身,它是为Secure SHell访问创build的。 考虑切换FTP / telnet的非安全选项。