问题描述
我曾尝试搜索以前的问题以获得我的问题的答案,但之前建议的所有答案都不适用于我。
我试图从我的本地机器连接到linode(运行ubuntu 12.04 LTS)(也运行ubnutu 12.04 LTS)
我在本地计算机上创建了一个私钥和公钥,并将我的公钥复制到我的linode的authorized_keys文件中。但是,每当我尝试ssh到我的linode时,我收到错误消息“Permission denied(publickey)。
在我的linode上如何设置ssh不是问题,因为我可以使用密钥身份验证从我的Windows机器上ssh到它。
在我本地ubuntu机器上的.ssh目录中,我有我的id_rsa和id_rsa.pub文件。我是否需要在本地计算机上创建authorized_keys文件?
编辑:这是我运行ssh -vvv -i id_rsa [youruser] @ [yourLinode]时得到的
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
最佳解决办法
PubKeyAuthentication
设置您的客户
-
生成你的密钥
-
ssh-keygen
-
-
配置ssh以使用密钥
-
vim ~/.ssh/config
-
-
将密钥复制到您的服务器
-
ssh-copy-id -i /path/to/key.pub SERVERNAME
-
您的步骤2中的配置文件应该具有类似于以下内容的内容:
Host SERVERNAME
Hostname ip-or-domain-of-server
User USERNAME
PubKeyAuthentication yes
IdentityFile ./path/to/key
Troubleshooting
-
使用”-vvv”选项
-
确保服务器具有您的PUBLIC密钥(.pub)。
-
确保您的IdentiyFile指向您的私钥。
-
确保你的.ssh目录有700个,你的文件有700个权限(rwx ——)。
-
tail -f /var/log/auth.log
(在服务器上)并在您尝试登录时监视错误
次佳解决办法
有时问题来自权限和所有权。例如,如果要以root身份登录,则/root
,.ssh
和authorized_keys
必须属于root。否则,sshd将无法读取它们,因此无法判断用户是否有权登录。
在您的主目录中:
chown -R your_user:your_user .ssh
至于权利,.ssh
为700,authorized_keys
为600
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
第三种解决办法
您的客户端不需要authorized_keys
。
您必须告诉ssh-client实际使用您生成的密钥。有几种方法可以做到这一点。仅用于测试类型ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]
。每次要连接到服务器时,都必须提供密码。
如果可行,您可以使用ssh-add .ssh/id_rsa
将密钥添加到ssh-agent
(您只需为此提供一次密码,只要您不注销/重启就可以使用密码)
第四种办法
还要确保用户的主目录(在服务器上)实际上属于用户ssh’ing(在我的情况下设置为root:root)。
本来应该:
sudo chown username:username /home/username;
第五种办法
我遇到的问题是它在客户端上使用了错误的密钥。我已将id_rsa和id_rsa.pub重命名为其他内容。您可以将它们重命名为默认值,或者在发出ssh命令时,可以像这样使用它
ssh -i ~/.ssh/private_key username@host
第六种办法
还要检查/etc/ssh/sshd_config
中PasswordAuthentication
的值,如果是no
则将其更改为yes
。不要忘记在此之后重启ssh服务。
第七种办法
我最近用我的网络服务器遇到了这个问题。
我通常会在~/.ssh/authorized_keys2
中的所有服务器上保留一份授权密钥列表。根据我的经验,sshd
默认会查找~/.ssh/authorized_keys
或~/.ssh/authorized_keys2
。
对于我的网络服务器,/etc/ssh/sshd_config
有此行
AuthorizedKeysFile %h/.ssh/authorized_keys
代替
AuthorizedKeysFile %h/.ssh/authorized_keys2
我应用了后者,重新启动了我的ssh守护进程,并使用我的pubkey解决了使用ssh登录的问题。