搞了一个 VPS ,想设置免钥登录,生成私钥和公钥之后,把"#PasswordAuthentication yes" 改成"PasswordAuthentication no" 之后就一直报这个错, Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 搜索了下,权限都 OK , authorized_keys 600 和 644 都试了,.ssh 也是 700 ,就是没办法啊,老报错,求高手解决
1
lifanxi 2016-12-06 17:10:15 +08:00
连 ssh 时加-vvv 参数,看具体的 Log 分析原因。
|
2
maikcn 2016-12-06 17:13:48 +08:00
私钥的权限设置为 600 了吗? ~/.ssh/id_rsa
|
3
indust 2016-12-06 17:14:37 +08:00
SELinux 问题? 试试 restorecon -r ~/.ssh
|
7
noobsheldon 2016-12-06 17:36:17 +08:00
|
8
vultr 2016-12-06 17:37:15 +08:00
报这个错误,应该是你的公钥和私钥没有配对好。
ssh user@ip -v 看看具体报什么错误。 |
9
zzandlove OP @noobsheldon 谢谢,这个看过,没用,哈哈
|
10
noobsheldon 2016-12-06 17:39:35 +08:00
@zzandlove 你是什么系统啊
|
11
BOYPT 2016-12-06 17:41:44 +08:00
手工添加的 key 可以参考下我的脚本:
https://coding.net/u/boypt/p/ptcoding/git/raw/master/bash/addkey.sh 如果是 rh 系的要注意 selinux ,用命令 restorecon -R -v $HOME/.ssh |
12
sunnyyj 2016-12-06 17:43:43 +08:00
前两天用 google cloud ,想改成 root 直接登录也遇到相同的问题
改 sshd_config , PermitRootLogin yes ,重启 sshd 服务 然后执行了几个命令,突然就好了,不知道对你有没有帮助 chown -R root:root ~/.ssh chmod 600 ~/.ssh/authorized_keys restorecon -r -vv ~/.ssh |
13
zzandlove OP @vultr
penSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuration data /root/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 56: Applying options for * debug1: Connecting to 我的 IP [我的 IP] port 22. debug1: Connection established. debug1: permanently_set_uid: 0/0 debug1: identity file /root/.ssh/id_rsa type 1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_dsa type -1 debug1: identity file /root/.ssh/id_dsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ed25519 type -1 debug1: identity file /root/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.6.1 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1 debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr [email protected] none debug1: kex: client->server aes128-ctr [email protected] none debug1: kex: [email protected] need=16 dh_need=16 debug1: kex: [email protected] need=16 dh_need=16 debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ECDSA 7b:70:a2:01:de:01:13:68:9f:38:2a:32:11:a0:60:7e debug1: Host ‘我的 IP' is known and matches the ECDSA host key. debug1: Found key in /root/.ssh/known_hosts:1 debug1: ssh_ecdsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Next authentication method: gssapi-keyex debug1: No valid Key exchange context debug1: Next authentication method: gssapi-with-mic debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available debug1: Unspecified GSS failure. Minor code may provide more information 我改了默认的 22 端口,改成其他的了 |
14
zzandlove OP @noobsheldon CentOS 7 64
|
15
aaronzjw 2016-12-06 17:51:04 +08:00
chmod 600 '密钥'
|
18
hilenlai 2016-12-06 17:56:27 +08:00
我有个问题是在 .ssh 里面做了 config 分配,但是每次重启都要执行:`ssh-add -K ~/.ssh/id_rsa` 才可以。谁知道怎么破?
|
21
hellojammy 2016-12-06 18:17:45 +08:00
我得做法是,使用 ssh-keygen -t rsa 命令 把机器的公钥 id_rsa.pub 直接拷贝到服务器的 authorized_keys 文件中,然后就可以实现 ssh 免密码登录了。详细的步骤可以参见: http://www.hello1010.com/linux_scp
|
22
falcon05 2016-12-06 20:19:39 +08:00 via iPhone
你知道 ssh-copy-id 吗?
|
24
julyclyde 2016-12-06 20:53:45 +08:00
上面-v 的结果不全
gssapi 之后应该还有好多内容 另外需要搭配服务器上的日志来看 secure 或者 auth.log |
25
julyclyde 2016-12-06 20:55:22 +08:00
从 debug1: permanently_set_uid: 0/0 来看,客户端是 root
(如果没有指定用其它用户名登录服务器,则也是 root ) 我怀疑是 PermitRoot no 导致的问题 |
26
adrianzhang 2016-12-06 20:58:43 +08:00 via Android
居然这么多回复都没解决?用户名用错了没?
|
28
Bardon 2016-12-06 21:08:35 +08:00
问问题前,请放出你的配置
ls -laF ~/.ssh cat /etc/sshd/sshd_config 不要让大家猜谜语 |
29
Bardon 2016-12-06 21:10:54 +08:00
另外, cat ~/.ssh/config 也放出来,可以修改掉 ip 与端口
|
30
bombless 2016-12-06 21:15:43 +08:00 via Android
我之前试过这种报错是网络问题, 233
|
35
billlee 2016-12-06 22:21:20 +08:00
看起来客户端都没尝试用密钥认证,你在客户端把私钥和公钥分别放到 ~/.ssh/id_${type} 和 ~/.ssh/id_${type}.pub 了吗?
|
36
kuretru 2016-12-06 22:25:54 +08:00 via iPhone
有可能是 OpenSSL 版本太低了,是不是刚装好系统没更新过软件包
|
37
BOYPT 2016-12-07 00:28:48 +08:00
|
40
airqj 2016-12-07 07:49:30 +08:00 via Android
ssh-agent
运行这个试试 |
41
finian 2016-12-07 08:52:22 +08:00
cat 一下本地 ~/.ssh/config 配置,还有你连接时用的命令(用户名、端口等)
|
45
zzandlove OP @adrianzhang 木有的
|
46
zzandlove OP @finian 用户名就是 root ,我暂时还没有加其他的,端口不是默认的 22 ,我改了一个其他的。默认配置也就改了#PasswordAuthentication yes" 改成"PasswordAuthentication no"
|
48
AstroProfundis 2016-12-07 09:22:45 +08:00
难道楼主是在 vps 上生成了密钥然后就禁用密码登录出来了.......
楼主你再重新说一遍上面的每个命令你都在什么地方执行的... 另外 ls -l ~/.ssh/ 以及我也怀疑是 SSH 客户端版本问题,服务端的太新了所以协商不出来双方都接受的加密算法之类的 |
49
kuretru 2016-12-07 09:24:57 +08:00 via iPhone
@zzandlove 我之前在 nya 开的 CentOS 就是这样,莫名错误公钥连接不上,后来更新软件包就解决了
|
50
zzandlove OP @Bardon
ls -laF ~/.ssh 总用量 20 drwx------ 2 root root 4096 12 月 6 18:21 ./ dr-xr-x--- 6 root root 4096 12 月 6 16:33 ../ -rw-r--r-- 1 root root 395 12 月 6 17:31 authorized_keys -rw-r--r-- 1 root root 139 12 月 6 17:40 config -rw-r--r-- 1 root root 175 12 月 6 16:09 known_hosts ------------------------------------------------------------- cat /etc/sshd/sshd_config 显示 cat: /etc/sshd/sshd_config: 没有那个文件或目录 |
51
zzandlove OP @AstroProfundis 这倒没有,是另外开了一个 SSH 链接,我用的是 MAC 自带的终端工具
ls -l ~/.ssh/ 显示 -rw-r--r-- 1 root root 395 12 月 6 17:31 authorized_keys -rw-r--r-- 1 root root 139 12 月 6 17:40 config -rw-r--r-- 1 root root 175 12 月 6 16:09 known_hosts |
53
kuretru 2016-12-07 09:34:47 +08:00
@zzandlove RHEL 系的话 yum update , deb 系的 apt-get update aptget upgrade
|
54
baizhebz 2016-12-07 10:06:29 +08:00
这个设置了吗 AllowUsers
|
56
huson 2016-12-07 10:10:18 +08:00
你是不是在创建机器时候 指定的 key ? 不要这样,先设置密码 然后再用 ssh-copy-id 去拷贝证书,或者拷贝公钥
|
57
finian 2016-12-07 10:46:27 +08:00
@zzandlove 感觉是没找到本地的 key ,可以在本地 .ssh/config 配置
``` Host test HostName x.x.x.x Port 22 User root IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa # 指定 key ``` 然后试试 ``` ssh test ``` |
58
ppwangs 2016-12-07 10:50:13 +08:00
把你 ssh 登陆命令打出来
|
60
vultr 2016-12-07 12:02:06 +08:00
还没搞定吗? 你还是别找了,按这个说明重新配置一下吧, https://wiki.centos.org/HowTos/Network/SecuringSSH
|
61
263 2016-12-07 12:11:27 +08:00
@zzandlove 看不清楚楼主两边的环境,根本没法判断啊。 能不能 ls -al 列出 vps 和本地 Mac 的 .ssh 文件夹及里面的内容呢?
|
62
murusu 2016-12-07 12:13:15 +08:00
客户端的 ssh_config 看看是不是 GSSAPIAuthentication 设置成 yes ?是的话注释掉看看
|
64
heyli 2016-12-07 12:26:40 +08:00
有可能权限问题
chmod 700 /home/user chmod 600 /home/user/.ssh/authorized_keys 试试 |
65
finian 2016-12-07 12:49:21 +08:00
@zzandlove 远程的 /etc/ssh/sshd_config 配置没有把 `PubkeyAuthentication` 设置为 `no` 吧
|
68
yizhilee 2016-12-07 13:48:09 +08:00
附言写上你的具体操作步骤和两边环境配置吧。
|
69
AstroProfundis 2016-12-07 14:11:12 +08:00
呃,话说楼主你还上得去服务器的话先把密码认证打开再调试吧,反正默认也会优先尝试密钥登录,不行再 fallback 到密码上...
然后服务器上 .ssh/ 中文件的权限,和 authorized_keys 里面的密钥是否正确?(除了权限,有没有奇怪的空字符之类的也可以检查下) |
70
AstroProfundis 2016-12-07 14:13:26 +08:00
以及认真的,服务端 yum update 更新一把试试...
|
71
ayiis 2016-12-07 14:28:48 +08:00
1. 移动.ssh 这个文件夹到 bak
2. ssh x.x.x.x #随便连一个服务器 3. 询问是否继续时输入 yes #此时 sshd 就会自动创建带有 sshd 上下文的.ssh 文件夹 4. 把 bak 里的 authorized_keys 移动到.ssh 跟 700 , 600 没有关系 |
72
douyang 2016-12-07 14:29:14 +08:00
@zzandlove
[root@niaoyun-118-192-147-6 .ssh]#cd /root/.ssh/ [root@niaoyun-118-192-147-6 .ssh]#ssh-keygen [root@niaoyun-118-192-147-6 .ssh]#ssh-agent [root@niaoyun-118-192-147-6 .ssh]#ssh-copy-id -i id_rsa.pub [email protected] |
74
zzandlove OP 问题解决了,我也不知道咋回事,按照 vultr 大神给的链接, https://wiki.centos.org/HowTos/Network/SecuringSSH ,重新配置了下,就好了。。。有需要的收藏这个 url
|
75
xuhaoyangx 2016-12-07 14:58:39 +08:00
@zzandlove 其实这个问题还有一种可能是 ip 子网设错导致的,很少见。还是给人留个思路,后辈装的系统,不会手动配固定 ip ,就用系统带的工具配,子网不能填写 255.255.255.0 这类格式,就没填,导致子网默认变成 32 ,虽然系统其他功能都能正常使用上网,但是就是 ssh 用证书无法正常登录,改成正常的子网即可
|
76
julyclyde 2016-12-09 18:26:16 +08:00
@xuhaoyangx 掩码产生的不止影响 ssh ,凡是需要判断远近的都会影响
|
77
merlinfeng 2017-11-15 16:51:12 +08:00
碰到了相同的问题 @zzandlove 你是删除从新配置的吗
|
78
merlinfeng 2017-11-16 15:50:23 +08:00
RSAAuthentication yes
PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys 艹 手残 把第三行的注释打开了 再注释 重启 sshd 就好了 |
79
lagel 2018-03-29 17:39:03 +08:00
我也遇到过:和楼主配置都差不多。
结果最后发现,我是没有指定:user ssh 连接的时候,默认使用了本机的 user。 |
80
zantop 2019-09-27 17:44:22 +08:00
我是忘了指定 IdentityFile
|