为什么在ubuntu上远程设置的SSH秘钥认证登陆总是失败?

我不明白 发布于 2014/07/20 10:12
阅读 4K+
收藏 0
我有一台ubuntu 14.04server系统的服务器,从安全角度出发考虑用SSH秘钥登陆方式远程登陆服务器,我的客户机是一台win7系统的笔记本,我通过ssh 用户名和密码登陆方式登入到ubuntu系统中,首先我设置的是/etc/sshd_config这个文件中的几个选项
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys


另外一个是PasswordAuthentication yes


我在用户目录下(/home/mama/)创建.ssh目录
sudo mkdir .ssh
然后我用ssh-keygen  -t rsa命令 生成秘钥和公钥,系统会有相应的提示,我输入的秘钥生成目录是/home/mama/.ssh
Generating public/private rsa key pair.     #提示正在生成rsa密钥对
Enter file in which to save the key (/home/mama/.ssh/id_dsa):     #询问公钥和私钥存放的位置,回车用默认位置即可
Enter passphrase (empty for no passphrase): 123456    #询问输入私钥密语,输入密语
Enter same passphrase again:123456
然后系统提示让我设置密码,这个密码我随便输入了一个123456


Your identification has been saved in /home/mama/.ssh/id_dsa.     #提示公钥和私钥已经存放在/root/.ssh/目录下
Your public key has been saved in /home/mama/.ssh/id_dsa.pub.
The key fingerprint is:
x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 root@server     #提示key的指纹


我觉得以上步骤应该没什么问题,因为我也是按照网络上的教程一步一步来的。
然后我通过cat id_rsa.pub >> authorized_keys 修改了公钥的名字,跟sshd_config中文件名保持一致,我把ubuntu系统中的id_dsa私钥和authorized_keys拷贝到 我的win7的笔记本上,我远程SSH控制服务器重新启动以后,在win7系统上 再次连接服务器,总是提示我秘钥公钥不对,我很郁闷为什么会这样呢? 哪一步我疏忽了呢?

加载中
0
leo108
leo108

两个问题

1.用户的home目录、.ssh目录、authorized_keys的权限分别应该是700,700和644,错一个都不行

2.最好还是在win7上生成公私钥,再拷贝到远程机器。

leo108
leo108
回复 @我不明白 : 同样.ssh目录以及下面的文件所有者必须是mami
leo108
leo108
回复 @我不明白 : 那说明/home/mami这个目录的所有者不是mami,用root执行chown mami /home/mami
我不明白
我不明白
回复 @leo108 :我部分操作是在服务器本机做的操作 用 mami用户登录以后 发现 目录拒绝被访问 问题是这个服务器只有一个用户名。
leo108
leo108
回复 @我不明白 : 你的登录用户是mami的话,为啥会没法访问?700的7指的就是mami这个用户拥有读写执行的权限啊
我不明白
我不明白
回复 @leo108 : 如果 把 mami 这个目录 都设置成700的话 SSH远程 是无法访问 mami 这个目录的
下一页
0
eechen
eechen
sudo apt-get -y install openssh-server
生成密钥对,并把私钥下到客户端.
ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
然会用WinSCP把私钥id_rsa传回来就能用了,因为配置/etc/ssh/sshd_conf默认就支持密钥认证,不用修改.
我不明白
我不明白
您说的这种方法我测试过了 总是提示我 秘钥效验失败
0
我不明白
我不明白
楼上 这种方法我测试过了,不知道什么地方出的问题,
我不明白
我不明白
回复 @eechen : 这个是另外一台服务器 这个用户名 不管你输入的是否是 哪个用户名 都显示 秘钥效验出错 。
eechen
eechen
你服务器上的用户是mama(/home/mama/),而你客户端却使用用户mayaren888,对不上,得把客户端的mayaren888改为mama。
0
我不明白
我不明白

我很奇怪的是 这次我在 服务器上 用ssh-keygen -t rsa 生成的 两个秘钥文件 以后 

我把私钥下载到 我的win7客户端机器上以后  用 CRT登录服务器 出现这样的提示,好像是公钥无法读取,其实私钥 我已经拷贝在 D:\key目录下了  文件名是 id_rsa

0
eechen
eechen
同是14.04,能够正常使用密钥认证登录:


我不明白
我不明白
难道 securecrt和 put 设置上还存在差异?
0
eechen
eechen
还有一点你要注意的是,比如我用的SSH客户端是PuTTY,而PuTTY是不能直接使用OpenSSH生成的私钥的,需要使用PUTTYGEN.EXE把OpenSSH的私钥转成PuTTY能够使用的私钥格式。
eechen
eechen
回复 @我不明白 : 可能吧,要不你换PuTTY试试:http://tartarus.org/~simon/putty-snapshots/x86/putty.zip
我不明白
我不明白
您这么说 是不是在这个环节上出现了问题呢?我在服务器上 用ssh-keygen直接生成的秘钥对,然后我直接通过wincp 下载到我的工作站上也就是我的客户端win7的电脑上,我的客户端上用的是secureCRT软件我直接在设置中指定了id_rsa的文件路径,是不是这个id_rsa不能直接被secureCRT直接识别呢?
0
旁边白
旁边白
用的是正版软件吗?
旁边白
旁边白
回复 @我不明白 : 用正版试一下,非正版可能把程序搞坏了
我不明白
我不明白
是破解版的secureCRT7.1版本 不是正版的
0
eechen
eechen
ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys 你确定你执行了这一句了吗?

我这边是可以的,有图有真相:

我不明白
我不明白
请问你有没有QQ什么的,我已经搞了3天这个了,希望你能帮助我看看我的机器是什么问题,我的QQ是:686500, 远程协助我看看我这边具体什么情况
0
我不明白
我不明白

引用来自“eechen”的评论

ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys 你确定你执行了这一句了吗?

我这边是可以的,有图有真相:

Event Log: Offered public key
Incoming raw data at 2014-07-21 22:16:57
  00000000  ae f3 b8 e2 db 10 64 ac e9 81 02 79 74 99 3b dc  ......d....yt.;.
  00000010  b8 d8 91 c1 db 3f 2d 93 7a a2 c8 a6 48 7b 0f 49  .....?-.z...H{.I
  00000020  f0 dc 82 b1 6c ff d3 8f 53 dc a7 95 9f c8 84 32  ....l...S......2
  00000030  bf 65 24 22 cb cf 78 34 63 a7 a1 ab f4 f4 05 35  .e$"..x4c......5
  00000040  68 cb 1e f6 1d e0 3d c4 dc f7 25 f4 71 70 05 0e  h.....=...%.qp..
Incoming packet #0x6, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
  00000000  00 00 00 12 70 75 62 6c 69 63 6b 65 79 2c 70 61  ....publickey,pa
  00000010  73 73 77 6f 72 64 00                             ssword.
Event Log: Server refused our key
这是putty log 日志  的最后几行,帮我看看问题出现在哪里呢?
0
我不明白
我不明白

引用来自“eechen”的评论

ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys 你确定你执行了这一句了吗?

我这边是可以的,有图有真相:

Jul 22 21:33:51 ubuntu1404 sudo:  mayaren : TTY=pts/0 ; PWD=/home/mayaren ; USER=root ; COMMAND=/usr/sbin/service ssh restart
Jul 22 21:33:51 ubuntu1404 sudo: pam_unix(sudo:session): session opened for user root by mayaren(uid=0)
Jul 22 21:33:51 ubuntu1404 sshd[1381]: Received signal 15; terminating.
Jul 22 21:33:51 ubuntu1404 sshd[1407]: Server listening on 0.0.0.0 port 22.
Jul 22 21:33:51 ubuntu1404 sshd[1407]: Server listening on :: port 22.
Jul 22 21:33:51 ubuntu1404 sudo: pam_unix(sudo:session): session closed for user root
Jul 22 21:33:59 ubuntu1404 sshd[1383]: Connection closed by 192.168.1.106 [preauth]




以上 是我的ubuntu14.04 的auth.log的 对应记录 看看能否找到问题所在

返回顶部
顶部