我正在考虑Amazon EC2上的安全设置存在某种问题,该IP只能限制对一个实例或证书的IP访问。
有人知道解决方案吗?
#1 楼
在这种情况下,要做的第一件事是对-v
使用ssh
选项,这样您可以看到尝试了哪种身份验证以及结果是什么。 在您对问题的更新中,您提到“在另一个本地Ubuntu上”。您是否已将ssh私钥复制到另一台计算机?
评论
我已经按照@Greg的建议将ssh私钥复制到了另一台计算机上。现在可以使用了。谢谢!
–Vorleak Chy
09年7月16日在2:03
仅供参考,您可以使用-i标志指向键的路径,而无需安装它们
–乔治·巴尔加斯(Jorge Vargas)
2010-11-3 23:35
就我而言,我使用的是bitnami .ami,却没有意识到您需要以名为bitnami的用户身份登录,例如:ssh -i
–马特·康诺利
2012年1月20日4:44
好吧,以我为例,我使用了错误的用户名。正在使用“ ubuntu”而不是“ bitnami”。像这样:ssh -i key.pem bitnami @ hostaddress
–卢卡斯·波特斯基(Lucas Pottersky)
2012年4月15日在21:44
远程节点本身也是一个不错的选择,查看/var/log/auth.log,有时您会看到以下消息:身份验证被拒绝:错误的所有权或文件/var/lib/jenkins/.ssh/authorized_keys的模式或其他的东西
–乔纳斯·利布布雷特(Jonas Libbrecht)
17年1月31日在9:11
#2 楼
尚未明确提及,默认情况下,sshd对authorized_keys
文件的权限非常严格。因此,如果authorized_keys
对用户以外的任何人都可写,或者可以使除用户以外的其他人可写,则它将拒绝进行身份验证(除非sshd配置了StrictModes no
)“可以写”是指,如果除用户之外的任何其他用户都可写任何父目录,则被允许修改那些目录的用户可以以修改/替换authorized_keys的方式开始修改权限。
<进一步,如果用户不拥有
/home/username/.ssh
目录,因此用户没有读取密钥的权限,则会遇到问题:drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh
请注意,简并不拥有
.ssh
文件。通过chown -R jane:jane /home/jane/.ssh
修复此问题,这些文件系统权限问题将不会在
ssh -v
中显示,并且甚至不会出现在sshd日志(!)中。将日志级别设置为DEBUG。编辑
/etc/ssh/sshd_config
。您想要某行在某处读取LogLevel DEBUG
。使用发行版提供的机制重新加载SSH服务器。 (在RHEL / CentOS / Scientific上为service sshd reload
。)正常的重载不会删除现有的会话。再次尝试进行身份验证。
确定您的auth设施日志存放在何处并读取它们。 (IIRC,在基于Debian的发行版上为
/var/log/auth.log
;在RHEL / CentOS / Scientific上为/var/log/secure
。)更容易找出包含文件系统权限错误的调试输出出了什么问题。完成后,请记住将更改还原为
/etc/ssh/sshd_config
!评论
那“可以写”的意思是让我着迷的
– wmarbut
2012年8月14日,3:20
FWIW密钥文件的正确权限是600(请参阅此处)
–马特·里昂
2012年11月28日4:22
是的,我的.authorized_keys文件可按组写入,因此拒绝接受。
– Aditya M P
13年8月7日在8:45
我的头撞在墙上!我的用户文件夹权限错误。谢谢!
– XJones
2014年6月12日23:19
〜/ .ssh文件夹本身也是如此。您可能会收到以下错误消息:身份验证被拒绝:所有权错误或目录模式
–叶夫根尼M.
14年7月30日在23:01
#3 楼
我收到此错误,因为我忘记添加-l
选项。我的本地用户名与远程系统上的用户名不同。 这不能回答您的问题,但是我到这里来寻找问题的答案。
评论
ssh host -l用户与ssh user @ host相同,对吗?
– Znarkus
2011年2月1日下午14:08
@Znarkus是的,是一样的。
– Cregox
2011年4月19日在16:53
是的,这也解决了导致“权限被拒绝(公钥)”错误的问题。
–布鲁克斯·摩西
2011年6月2日21:30
这是我的问题。我期望用户“ root”可以工作,但是我使用的是具有默认用户“ ubuntu”的Ubuntu EC2映像。
–塞林
2013年6月14日19:54
#4 楼
我在基于Ubuntu AMI的新实例上收到此消息。我正在使用-i选项来提供PEM,但它仍显示“权限被拒绝(公共密钥)”。我的问题是我没有使用正确的用户。通过使用ubuntu @ ec2运行ssh ...可以正常工作。
评论
是的...我正在使用sudo运行命令,这就是为什么它不起作用的原因。
– thaddeusmt
2011年9月17日下午12:56
#5 楼
比ssh -v
更容易阅读的东西(我认为当然是tail -f /var/log/auth.log
)。应该在尝试连接的服务器上运行,同时尝试连接。它会以纯文本显示错误。这帮助我解决了我的问题:
不允许来自xx.yy.com的用户[用户名],因为用户组列在AllowGroups
评论
这是服务器日志。对于RHEL / CentOS 7:tail -f / var / log / secure
– Gianfranco P.
15年7月13日在22:05
#6 楼
检查您的/ etc / ssh / sshd_config文件。在那里找到找到PasswordAuthentication no
的那一行,需要修改该行以说是而不是否。另外,此后重新启动sshd服务器。
sudo /etc/init.d/ssh restart
评论
这样会使服务器的安全性降低。
– Znarkus
2011年2月1日下午13:45
这就是我遇到的问题:我想为另一个用户设置一个帐户,仅使用密码进行身份验证。我还希望能够以自己的身份从没有私钥的地方登录。
–丹尼尔(Daniel)
2011年4月10日在22:28
如果我们什至无法进入服务器,该如何去/ etc / ssh / sshd_config?
–cyber8200
2015年6月27日12:50
要进入服务器本身,必须使用它们在创建实例时给出的PEM文件。该说明之后。
– Sudipta Chatterjee
15年6月29日在18:27
这对我有用,尽管重新启动sshd需要以下命令:sudo service sshd reload
– pacoverflow
18-10-19在19:23
#7 楼
也许与当前发布者无关,但可能会帮助其他人在寻找类似情况的答案时找到它。建议您不要将自己的标准默认默认公共ssh密钥上传到Amazon,而不是让Amazon生成ssh密钥对,并指定在运行EC2实例时指定该密钥。在ssh中键入语法,在标准选项中使用rsync,还允许您在所有EC2区域中使用相同的ssh密钥。我在这里写了一篇有关此过程的文章:
将个人ssh密钥上传到Amazon EC2http://alestic.com/2010/10/ec2-ssh-keys
评论
+1正正是出于这个原因查找了这个问题。
– John Riselvato
13年5月30日在18:36
我在关注您的文章时看到此错误。 region = $(ec2-describe-regions | cut -f2)缺少必需的选项-K,-private-key KEY(使用-h)
– KashifAli
2013年9月1日14:01
@KashifAli您将需要设置EC2 API命令行工具凭据,因此您不必总是在每个命令行上都传递凭据。
–埃里克·哈蒙德(Eric Hammond)
2013年9月5日在7:14
#8 楼
奇怪的是,我的问题原来是服务器已重新启动,并被赋予了新的DNS名称。我使用的是旧的DNS名称。我知道这听起来很愚蠢,但花了我一段时间才弄清楚。评论
谢谢!这正是我的问题。重新启动实例时,我没有意识到DNS名称已更改。
– Tim Swast
2012年1月2日,下午3:36
就我而言,*。compute.amazonaws.com URL在分配弹性IP时发生了更改。
–杰弗里·布斯(Geoffrey Booth)
2014年1月26日在22:14
#9 楼
如果要连接到运行Dropbear的CyanogenMod电话,则应运行以下行,以确保所有权限都正确:chmod 600 /data/dropbear/.ssh/authorized_keys
或
chmod 700 /data/dropbear/.ssh/authorized_keys # In case of MacOS X 10.6-10.8
和
chmod 755 /data/dropbear/ /data/dropbear/.ssh
此问题已为我修复,否则无法连接。
评论
“当尝试在另一个本地Ubuntu上将SSH访问EC2时。”
– Grammargeek
2015年10月8日在10:42
如果我没有authorized_keys怎么办?
– IgorGanapolsky
16年8月18日在9:00
#10 楼
如果您使用的是CentOS 5,则可能要在StrictModes no
中设置/etc/ssh/sshd_config
。我正在使用NIS / NFS共享/ home目录,并且我正确设置了所有权限,但是它总是提示我输入密码。设置StrictModes no
之后,问题消失了! #11 楼
Greg的答案说明了如何更好地解决它,但是实际的问题是,您在事务(客户端)的一侧设置了ssh密钥,该密钥正在尝试进行公共密钥身份验证,而不是基于密码的身份验证。由于您在EC2实例上没有相应的公钥,因此无法使用。评论
您如何解决该问题?
–朱利安·格里尼尔(Julien Grenier)
2011年5月15日在1:49
#12 楼
我遇到了同样的问题,在尝试了许多无法解决的解决方案后,我在路由器的防火墙上打开了SSH端口(路由器的防火墙控制面板很乱,因此很难告诉发生了什么事)。无论如何,它已经解决了:)令人讨厌的是,您得到的错误是“权限被拒绝”,这意味着建立了某种连接,grr。
#13 楼
即使我按照所有步骤进行操作,我也遇到相同的问题$ ec2-authorize default -p 22
但是,我是在us-west-1中启动实例的地区。因此,上面的命令还应该指定该内容。我花了一段时间
我意识到了这个问题,希望这篇文章对其他人有帮助。
#14 楼
这是一种罕见的情况,但是如果启用了selinux,并且正在使用带有nfs的带有authorized_keys的目录(例如,共享主目录),则需要禁用selinux(出于安全原因不建议使用,但可以暂时将其禁用)看看这是否引起问题)或允许selinux使用nfs主目录。我不清楚细节,但这对我有用setsebool -P use_nfs_home_dirs 1
#15 楼
在无意中向用户主目录添加了组写权限后,我也遇到了同样的问题。我是在计算机上运行
tail -f /var/log/secure
并看到错误Authentication refused: bad ownership or modes for directory /home/<username>
的原因,这是原因。#16 楼
TL; DR-确保您使用正确的用户名-ubuntu / ec2-user / etc。我正在使用堡垒主机(ec2),它是Amazon Linux OS,(
ec2-user
)和尝试从堡垒主机到私有主机(ec2),即Ubuntu 18.04 OS(ubuntu
)这听起来很有趣,因为您应该知道要SSH连接的计算机的用户名,但是由于我通过SSH连接到多台计算机,有时会犯这些错误。
评论
“它以前曾经工作过”-在什么之前?我有一个Elastic Beanstalk EC2实例。截至2013年8月,解决方案是以ec2-user用户身份访问实例,从而消除了Permission Denied(publicKey)错误。即:ssh -i ./mike-key-pairoregon.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com。当然,根据stackoverflow.com/questions/4742478/…,您还必须处理所有其他内容。
如果您指定了错误的用户名,则会出现此问题。 AWS文档(docs.aws.amazon.com/AWSEC2/latest/UserGuide/…)当前给出了一个示例,其用户名为ec2-user [ssh -i /path/my-key-pair.pem ec2-user @ ec2-198 -51-100-1.compute-1.amazonaws.com],而我的(旧)ubuntu框的用户名是ubuntu,因此在使用示例时,我收到此错误,更改为正确的用户名即可解决。
@ david.barkhuizen,您的评论对我有所帮助。我有一个类似的问题。原来,这与用户名有关。谢谢。