码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下通过ssh-keygen和ssh-copy-id命令实现ssh无密码登录访问

时间:2015-08-12 19:54:19      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:文章   用户名   服务器   

一直想把自己的服务器的 SSH 认证的模式从用户名密码模式转换成 RSA 和 DSA 认证协议,借着OpenSSH 4.2的发布,今天写了一下配置过程并收集了一些关于 RSA 和 DSA 的参考文章。

思路整理:
一直没有理解公匙模式下的认证过程,这里总结一下公匙和秘匙的制作和安置方法。以下假设一台服务器Server和一台PC作为例子。
首先,并不是在服务器上生成公匙和秘匙。因为很多关于RSA 和 DSA 认证协议的文章都使用Linux服务器作为道具,自然也就使用诸如 ssh-keygen -t rsa 之类的命令,而使得我总是误认为要先在Linux服务器上先生成公匙和秘匙。而真正的安置方法是:
当从PC连接Server的时候,需要在PC上保存一对公匙和秘匙(这对公匙和秘匙可以用诸如PenguiNet之类的工具生成),而只要把生成的公匙传到Server上即可。而往往在Server上,公匙是被放在 ~/.ssh/authorized_keys 这个文件中。这个文件的设置可以在 /etc/ssh/sshd_config 中找到。

AuthorizedKeysFile .ssh/authorized_keys
那么当从一个Linux Client Server连接到另外一个Linux Server的时候,我们应该在 Linux Client Server 上生成一对秘匙(RSA时默认为 id_rsa 和 id_rsa.pub),保存在 ~/.ssh/ 中, 这个设置可以在 /etc/sshd/ssh_config 中设置:

# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
这样我们也可以更好地理解 ssh_config(客户端)和 sshd_config(服务器端)的区别了。

使用下例中ssky-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机。
1.在客户端机器中执行ssh-keygen –t rsa命令生成ssh公钥和ssh私钥
2.在客户端机器中执行ssh-copy-id -i .ssh/id_rsa_pub  root@202.202.33.22把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id 也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限 。
3. 客户端机器测试通过ssh -v  root@ip无密码登录服务器 ,-v可以debug整个过程,可以调错。

 

出现的问题1:

ssh-copy-id:/usr/bin/ssh-copy-id: ERROR: No identities found

解法:

$ ssh-copy-id remote-machine

公钥,私钥已经生成,执行上述命令完毕出现如下错误:

/usr/bin/ssh-copy-id: ERROR: No identities found

g 之发现缺少公钥路径,通过 -i 加上即可:

$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote_ip

 

出现的问题2:

ssh-keygen 产生id_rsa, id_rsa.pub, 已经放到正确位置(.ssh), 但是会出现如下信息:
Agent admitted failure to sign using the key
解法
在自己的客户机上, 运行 ssh-add, 会出现如下信息:
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
再次联入就正常了。


 

 

Linux下通过ssh-keygen和ssh-copy-id命令实现ssh无密码登录访问

标签:文章   用户名   服务器   

原文地址:http://515750.blog.51cto.com/505750/1684032

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!