由于某种原因,我无法在新的CentOS盒子上input密码。
我试过以下这些指南:
但是都没有工作。 我甚至检查了我的/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文件以获取线索。
作为最后的提示,请查看:
检查你的权限,他们应该是
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说…