将公钥添加到〜/ .ssh / authorized_keys不会自动login

我将public ssh密钥添加到了authorized_keys文件中。 ssh localhost应该login我而不要求密码。

我这样做,并尝试inputssh localhost ,但它仍然要求我input密码。 有没有其他的设置,我必须通过使其工作?

我遵循更改权限的说明:

下面是我做ssh -v localhost

 debug1: Reading configuration data /home/john/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to localhost [127.0.0.1] port 22. debug1: Connection established. debug1: identity file /home/john/.ssh/identity type 1 debug1: identity file /home/john/.ssh/id_rsa type -1 debug1: identity file /home/john/.ssh/id_dsa type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3 debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host 'localhost' is known and matches the RSA host key. debug1: Found key in /home/john/.ssh/known_hosts:12 debug1: ssh_rsa_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,password debug1: Next authentication method: publickey debug1: Offering public key: /home/john/.ssh/identity debug1: Server accepts key: pkalg ssh-rsa blen 149 debug1: PEM_read_PrivateKey failed debug1: read PEM private key done: type <unknown> 

然后在上面的日志之后请求通过。 为什么不在没有密码的情况下login?

您需要validationauthorized_keys文件和它所在的文件夹/父文件夹的权限。

 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 

欲了解更多信息,请参阅http://www.openssh.org/faq.html#3.14 (无效链接)

caching副本: https ://web.archive.org/web/20140327182105/http: //www.openssh.org/faq.html#3.14

您可能还需要更改/validation您的主目录的权限,以删除组和其他人的写入权限。

 chmod go-w ~ 

SELinux也可能导致authorized_keys无法工作。 特别是在CentOS 6和7中的root。不需要禁用它。 一旦你已经validation你的权限是正确的,你可以解决这个问题:

 chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys restorecon -R -v /root/.ssh 

设置ssh authorized_keys似乎很简单,但隐藏了一些陷阱我想图

– 服务器 –

/ etc / ssh / sshd_config中设置passwordAuthentication yes让服务器临时接受密码authentication

– 客户 –

考虑Cygwin作为Linux模拟和安装&运行openssh

1.生成私钥和公钥(客户端) # ssh-keygen

在这里只需按ENTER即可获得〜/ .ssh /中的 DEFAULT 2文件“ id_rsa ”和“ id_rsa.pub ”,但是如果您inputname_for_the_key ,生成的文件将保存在您的密码

2.your_key.pub放到目标机器上ssh-copy-id user_name@host_name

如果你没有创build默认密钥,这是出错的第一步…你应该使用

ssh-copy-id -i path/to/key_name.pub user_name@host_name

3. logging ssh user_name@host_name只能用于默认的id_rsa,所以这里是第二个陷阱你需要ssh -i path/to/key_name user@host

(使用ssh -v …选项来查看正在发生的事情)

如果服务器仍然要求密码,那么你给了smth。 input密码:当你创build密钥(这是正常的)

如果ssh没有监听默认端口22,则必须使用ssh -p port_nr

– 服务器—–

4.修改/ etc / ssh / sshd_config来拥有

 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys 

(如果情况下不涂)

这告诉ssh接受authorized_keys并在用户主目录中查找写入.ssh / authorized_keys文件的key_name sting

5在目标机器上设置权限

 chmod 755 ~/.ssh chmod 600 ~/.ssh/authorized_keys 

同时closures通过身份validation

passwordAuthentication no

closures所有ssh root / admin /….@ your_domain尝试的大门

6确保所有非根主目录的所有权和组所有权是适当的。

 chown -R ~ usernamehere chgrp -R ~/.ssh/ user 

===============================================

7.考虑优秀的http://www.fail2ban.org

8.额外的SSH隧道来访问MySQL(bind = 127.0.0.1)服务器

另外要确保你的主目录不可被别人写入

 chmod gw,ow /home/USERNAME 

答案是从这里偷来的

在.ssh / authorized_keys中列出公钥是必要的,但对于sshd(服务器)来说是不够的。 如果您的私钥是密码保护的,则您需要每次给ssh(客户端)密码。 或者你可以使用ssh-agent,或者一个等价的gnome。

您的UPDATE'd跟踪与密码保护的私钥是一致的。 请参阅ssh-agent或ssh-keygen -p。

绝望也可能由于复制id_rsa.pub文本在混淆的terminal之外确保他们在authorized_keys文件没有额外的换行符。

注意SELinux也可以触发这个错误,即使所有权限似乎都没有问题。 禁用它为我做了窍门(关于禁用它插入通常的免责声明)。

对我来说终于做的伎俩是确保所有者/组不是root而是用户:

 chown -R ~/.ssh/ user chgrp -R ~/.ssh/ user 

用户是您的用户名

 mkdir -p /home/user/.ssh ssh-keygen -t rsa touch /home/user/.ssh/authorized_keys touch /home/user/.ssh/known_hosts chown -R user:user /home/user/.ssh chmod 700 /home/user/.ssh chmod 600 /home/user/.ssh/id* chmod 644 /home/user/.ssh/id*.pub chmod 644 /home/user/.ssh/authorized_keys chmod 644 /home/user/.ssh/known_hosts 

尝试“ssh-add”为我工作。

写命令:

 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 

做完这些之后,确保你的目录是这样的:

 drwx------ 2 lab lab 4.0K Mar 13 08:33 . drwx------ 8 lab lab 4.0K Mar 13 08:07 .. -rw------- 1 lab lab 436 Mar 13 08:33 authorized_keys -rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa -rw-r--r-- 1 lab lab 413 Mar 13 07:35 id_rsa.pub 

另一个要记住的提示。 自v7.0以来,由于OpenSSH的inheritance薄弱,默认情况下会禁用 DSS / DSA ssh密钥。 所以如果你有OpenSSH v7.0 +,确保你的密钥不是ssh-dss

如果您遇到DSA密钥,则可以通过以下行更新sshd_config~/.ssh/config文件来重新启用本地支持: PubkeyAcceptedKeyTypes=+ssh-dss

确保目标用户设置了密码。 运行passwd username来设置一个。 即使密码SSHlogin被禁用,这也是我所需要的。

我从上面发布了sudo chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys 600〜 chmod 600 ~/.ssh/authorized_keyschmod go-w $HOME $HOME/.ssh ,并在CentOS7上修复了我的问题,试图让桑巴股份工作。 谢谢

这解决了我的问题

ssh-agent bash

SSH-ADD

另一个问题,你必须小心。 如果你生成的文件不是默认的id_rsaid_rsa.pub

您必须创build.ssh / config文件,并手动定义您要使用连接的id文件。

例如:

 host remote_host_name hostname 172.xx.xx.xx user my_user IdentityFile /home/my_user/.ssh/my_user_custom.pub 

在我的情况下,我需要将我的authorized_keys文件放在.openssh

该位置在/etc/ssh/sshd_configAuthorizedKeysFile %h/.ssh/authorized_keys选项中AuthorizedKeysFile %h/.ssh/authorized_keys

在那个笔记,请确保您的sshdconfiguration有 – ;

 PermitRootLogin without-password 

设置如上,然后重新启动sshd(/etc/init.d/sshd restart)

注销并再次尝试login!

我相信是默认的 – ;

 PermitRootLogin no 

这似乎是一个权限问题。 通常情况下,如果某个文件/目录的权限设置不正确,就会发生这种情况。 在大多数情况下,它们是~/.ssh~/.ssh/* 。 在我的情况下,他们是/home/xxx

您可以通过修改/etc/ssh/sshd_config (searchLogLevel ,将其设置为DEBUG )来更改sshd的日志级别,然后检查/var/log/auth.log的输出以查看究竟发生了什么。

在我的情况下,这是因为用户的组没有设置在configuration文件/ etc / ssh / sshd_config的AllowGroups中。 join后,一切正常。

我的问题是修改后的AuthorizedKeysFile,当填充/ etc / ssh / authorized_keys的自动化还没有运行。

 $sudo grep AuthorizedKeysFile /etc/ssh/sshd_config #AuthorizedKeysFile .ssh/authorized_keys AuthorizedKeysFile /etc/ssh/authorized_keys/%u 

我有一个非标准的位置和sshd日志中的主目录我有这样的一行:

 Could not open authorized keys '/data/home/user1/.ssh/authorized_keys': Permission denied 

即使所有权限都很好(请参阅其他答案)。

我在这里find了一个解决scheme: http : //arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069ec2aa5fdcd691a2e2e7242c2#p25813191

在我的具体情况下:

  • /etc/selinux/targeted/contexts/files/file_contexts.homedirs添加一行:

    • 这是常规主目录的原始线路:

      /home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

    • 这是我的新行:

      /data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • 之后是一个restorecon -r /data/和一个sshd重启