我刚用openssh服务器安装了一个普通的ubuntu透明(10.04)系统。我正在尝试设置公开密钥身份验证,只有当我首先使用密码身份验证连接并保持该会话处于打开状态时,它才能起作用。所有新的并发会话都将与公钥一起工作。
我已经采取了所有步骤来确保我的服务器端主目录上有正确的权限。
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys我的客户端RSA 2048位公钥被追加到authorized_keys文件中(仅一行)。我的RSA密钥也有空密码。
我很困惑是什么导致了这一切。我知道这一定是我的服务器配置的问题。我听说过,如果配置“不够安全”,不允许公开密钥身份验证,但我不知道这可能是什么。
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes其余的都是默认的。PublicKey可以工作,但不适用于第一次会话。
提前感谢!
发布于 2010-08-18 17:21:06
如果您有一个加密的主目录,Ubuntu使用EcryptFS的方式,那么这将解释您正在经历的事情。在您进行了第一次密码登录之后,您的~/..ssh/特授权密钥第一次就可用了。
允许ssh键直接登录的一种方法是在主目录之外指定AuthorizedKeysFile。这可以通过在路径中使用%u (用户)而不是%h (主目录)来完成。另一种选择是将~/..ssh/authorized_keys的副本放到主目录的“卸载”版本中。这就是放置在EcryptFS挂载下面的内容。
然而,不确定这些解决方案中的任何一个对你有多大的好处。您仍然需要(某种程度上)使用您的密码登录,才能访问您的常规主目录。它是您的用户密码,用于解压缩安装/解密您的EcryptFS主目录所需的密码。是的,您仍然可以手动挂载/解密,但这似乎是另一个问题。
发布于 2010-08-17 09:28:32
我的猜测是,一旦您使用密码身份验证进行记录,它就会工作,因为在客户端,您已经设置了ControlMaster/ControlPath,这允许在后续连接中重用连接。
尝试通过将LogLevel设置为DEBUG3来提高服务器端的日志级别,并挖掘日志(/var/ log /auth.log)以查看发生了什么。
在客户端,将-vvv添加到ssh命令行,以查看客户端正在使用哪些键。
有了这两种信息,你应该能够弄清楚是什么在增长。
发布于 2010-08-17 08:42:24
您的authorized_keys文件需要驻留在.ssh文件夹中,并且它应该具有644个权限。
https://serverfault.com/questions/171240
复制相似问题