mor*_*ant 4 linux ssh fedora centos hostkey
我正在尝试从基于 Mac OS X 10.5 Leopard Server 的中央备份服务器到运行 Fedora 10 和 CentOS 5.2 的两台 Linux 服务器设置 SSH 主机密钥。我们通常采取的流程是有效的,将密钥放在 ~/.ssh/authorized_keys 中,但它仍然提示输入密码。
我不是这些盒子的常规管理员,我知道默认设置可能是禁用 SSH 主机密钥。如何启用 SSH 主机密钥?
更新:我已经在 /etc/ssh/ssd_config 中取消注释了 'PubkeyAuthentication yes' 并运行了service restart sshd,但这没有用。取消注释所有三行(“RSAAuthentication”、“PubkeyAuthentication”和“AuthorizedKeysFile”),更正 ~/.ssh 上的权限并重试。还是没有爱。
当我运行时ssh -v user@host,在提示输入密码之前和一些 GSS 错误之后,我得到以下信息:
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/shortname/.ssh/identity
debug1: Trying private key: /Users/shortname/.ssh/id_rsa
debug1: Trying private key: /Users/shortname/.ssh/id_dsa
debug1: Next authentication method: password
Run Code Online (Sandbox Code Playgroud)
进一步的建议?
另一个更新:对权限~/和~/.ssh/700个。
我一直在运行以创建主机密钥的命令如下:
cat /blah/ssh_keys_for_shortname/id_dsa.pub | ssh -l shortname -o stricthostkeychecking=no -i /blah/ssh_keys_for_shortname/id_dsa host.domain.tld 'cat - >> ~/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)
尝试连接时,我使用:
ssh --verbose -l shortname -o stricthostkeychecking=no -i /blah/ssh_keys_for_shortname/id_dsa host.domain.tld
Run Code Online (Sandbox Code Playgroud)
所以,显然我们正在使用 DSA 密钥。我试过重命名~/.ssh/authorized_keys2,但这没有帮助。
我很想将密钥存储在它们的默认位置而不是/blah/ssh_keys_for_shortname/,但这是我无法控制的。
当我观看/var/log/audit/audit.log并尝试连接时,我得到以下信息:
type=CRED_DISP msg=audit(1249426114.642:128): user pid=10589 uid=0 auid=501 ses=14 msg='op=PAM:setcred acct="shortname" exe="/usr/sbin/sshd" (hostname=host.domain.tld, addr=192.168.1.149, terminal=ssh res=success)'
type=USER_END msg=audit(1249426114.647:129): user pid=10589 uid=0 auid=501 ses=14 msg='op=PAM:session_close acct="shortname" exe="/usr/sbin/sshd" (hostname=host.domain.tld, addr=192.168.1.149, terminal=ssh res=success)'
type=USER_LOGIN msg=audit(1249426129.524:130): user pid=10633 uid=0 auid=4294967295 ses=4294967295 msg='acct="shortname": exe="/usr/sbin/sshd" (hostname=?, addr=192.168.1.149, terminal=sshd res=failed)'
Run Code Online (Sandbox Code Playgroud)
建议?
Ins*_*yte 10
看起来你的基础知识是正确的。
我所看到的导致此失败的最常见原因是远程authorized_keys文件及其上方目录的权限。在允许基于密钥的身份验证之前,sshd执行权限检查;如果它不喜欢结果,则不允许进行身份验证。我通常设置~/.ssh为 0700 和~/.ssh/authorized_keys0600。我相信实际的 $HOME 也不能有 group 或 world 写入,尽管读取很好。
如果仍然不能解决问题,下一步是在服务器端进行一些调试:
server$ /usr/sbin/sshd -d -p 2222
Run Code Online (Sandbox Code Playgroud)
然后从您的客户端连接到“调试”服务器:
client$ ssh -v user@host -p 2222
Run Code Online (Sandbox Code Playgroud)
您将stderr在服务器上获得丰富的调试信息。我还没有遇到无法从那里追踪的身份验证问题。
| 归档时间: |
|
| 查看次数: |
17041 次 |
| 最近记录: |