将公钥添加到〜/ .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 ~/.ssh
和chmod 600 ~/.ssh/authorized_keys
600〜 chmod 600 ~/.ssh/authorized_keys
和chmod go-w $HOME $HOME/.ssh
,并在CentOS7上修复了我的问题,试图让桑巴股份工作。 谢谢
这解决了我的问题
ssh-agent bash
SSH-ADD
另一个问题,你必须小心。 如果你生成的文件不是默认的id_rsa
和id_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_config
的AuthorizedKeysFile %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
重启