没有密码的SSH

由于某种原因,我无法在新的CentOS盒子上input密码。

我试过以下这些指南:

  • http://linuxproblem.org/art_9.html
  • http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

但是都没有工作。 我甚至检查了我的/etc/ssh/sshd_config文件。 PubkeyAuthentication yes最初是注释掉的,所以我取消注释,并重新启动sshd,但仍然无济于事。 任何可能会遗漏的任何想法?

我试图SSH从服务器A到服务器B作为根。 因此,以root身份login到一个盒子,然后以root身份login到下一个,而没有提示input密码。

UPDATE

我跑了一个ssh -v ...但不能复制/粘贴到这里。 一切看起来不错,直到这一行:

 debug1: Next authentication method: gssapi-with-mic debug1: Unspecified GSS failure. Minor Code may provide more information Unknown code krb5 195 

一个基于公钥的CentOS /红帽等authentication的小指令

在SSH客户端上:

 ssh-keygen # Accept all defaults, do not enter a password. ssh-copy-id USER@SERVER_IP restorecon -R ~/.ssh 

在SSH服务器上:

 # Login to the server normally (with password) restorecon -R ~/.ssh 

基于公钥的authentication现在应该可以工作。

这些问题(通常是与权限相关的)从服务器端更容易debugging。 我build议你在debugging模式下启动另一个sshd: /usr/sbin/sshd -d -p 2222将在端口2222上启动另一个sshd,然后在客户端运行ssh -p 2222 user@sshserver 。 当您的客户端尝试进行身份validation时,请注意sshd的内容。

权限问题不一定只是/home/$USER/.ssh 。 这也可能是//home/home/$USER 。 如果其中任何一组是可写的,则可能是一个问题。

另一个常见的问题是,你错误地粘贴并在你的密钥的authorized_keys文件中间插入换行符

 serverA# ls -lah /root serverA# ls -lah /root/.ssh serverA# selinuxenabled serverA# echo $? serverB# ls -lah /root serverB# ls -lah /root/.ssh serverB# senlinuxenabled serverB# echo $? 

如果没有显示出问题,请尝试以下操作。 ServerA是客户端,serverB是ssh服务器。

在serverB上,编辑/ etc / ssh / sshd_config。 find如下所示的行:

LogLevel信息

将其更改为:

LogLevel VERBOSE

然后:

 serverB# /etc/init.d/sshd restart 

在serverA上:

 serverA# ssh -vvv root@serverb 

您现在可以重新获取serverB上的/ var / log / secure文件以获取线索。

作为最后的提示,请查看:

http://www.ibm.com/developerworks/library/l-keyc/index.html

检查你的权限,他们应该是

drwx ——

为你的.ssh 目录

-rw ——-

为您的authorized_keys 文件

因此,要正确设置权限,请尝试以下操作:

 chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 

如果您启用了SELinux,那么这是一个常见的问题…

在SSH服务器上运行以下命令:

 restorecon -R /home/$USER/.ssh 

或者,对于root:

 restorecon -R /root/.ssh 

“Nuff说…