安全的免密码ssh登录的简单介绍
2014-06-25 17:12
190 查看
经常使用scp命令实现跨服务器文件的传输,但是很头疼的是每次都要输入密码。通过ssh-keygen生成公钥拷贝到远程服务器上倒是不用输入密码了,但是有很大安全隐患。在网上查找,看到jianingy大牛的帖子,很有启发。贴在这里日后参考。
http://www.jianingy.com/ssh-pass.html (原贴连接)
ssh实现了加密的远程登录. 但做为一个系统管理员,当需要操作的机器很多时频繁的输入密码往往会让你崩溃掉. 幸好你看到了这篇文章, 它将告诉你如何实现即安全又方便的免密码ssh登录.
首先你需要放弃使用的密码登录的方式,因为那种方式实在太让人崩溃了. 下面我们开始使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是
你需要创建一对公私钥
然后把公钥放到服务器上, 自己保留好私钥
当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了我们现在来点实际的, 我们有两台机器: qian.jianingy.com(这是我们的服务器, 实际上它是我的), nby.jianingy.com(这是我的笔记本). 首先,使用ssh-keygen程序在笔记本上创建公私钥对:
[jianingy@nby: ssh~]$-keygen
之后会看到这些信息
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jianingy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
15:c6:44:59:bf:6f:7a:11:eb:cb:02:d4:aa:33:e0:ae jianingy@nby
[jianingy@nby:~]cat /home/jianingy/.ssh/doggy.pub|ssh 192.168.1.9 "
cat - >> ~/.ssh/authorized_keys"
好现在试试看ssh登录吧. 如果你想了解更多可以试试看用ssh -v登录.
[jianingy@nby:~]ssh qian.jianingy.com
现在系统提示
Enter passphrase for key '/home/jianingy/.ssh/id_rsa':
[jianingy@nby:~]eval `ssh-agent`
[jianingy@nby:~]ssh-add
这里会提示输入一次passphrase:
[jianingy@nby:~]ssh-add
Enter passphrase for /home/jianingy/.ssh/id_rsa:
Identity added: /home/jianingy/.ssh/id_rsa (/home/jianingy/.ssh/id_rsa)
好了,现在再次登录服务器, 我们已经没有密码的烦恼了.至于为什么要用这么奇怪的方式运行ssh-agent, 你可以试着在命令行上输入一个ssh-agent回车, 看看输出什么你就会明白了.
如果你看了上面直接运行ssh-agent的输出,你应该已经明白了ssh和ssh-agent是如何相互了解的. 没错, 通过环境变量ssh知道了与ssh-agent通信的unix socket在哪里.然而当我们打开一个新的终端时我们必须要重新设置这个环境变量.做为一个慵懒的系统管理员,这是不可忍受的.所以我用perl写了这个脚本, 他可以找到以前的ssh-agent.
http://www.jianingy.com/ssh-pass.html (原贴连接)
背景
ssh实现了加密的远程登录. 但做为一个系统管理员,当需要操作的机器很多时频繁的输入密码往往会让你崩溃掉. 幸好你看到了这篇文章, 它将告诉你如何实现即安全又方便的免密码ssh登录.
创建ssh公私钥
首先你需要放弃使用的密码登录的方式,因为那种方式实在太让人崩溃了. 下面我们开始使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是你需要创建一对公私钥
然后把公钥放到服务器上, 自己保留好私钥
当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了我们现在来点实际的, 我们有两台机器: qian.jianingy.com(这是我们的服务器, 实际上它是我的), nby.jianingy.com(这是我的笔记本). 首先,使用ssh-keygen程序在笔记本上创建公私钥对:
[jianingy@nby: ssh~]$-keygen
注:这里补充一下,不通版本可能命令上有细微差别,比如AS4就要使用命令
[tomcat@devdb ~]ssh-keygen -t rsa
之后会看到这些信息
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jianingy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
15:c6:44:59:bf:6f:7a:11:eb:cb:02:d4:aa:33:e0:ae jianingy@nby
ssh-keygen程序会寻问你把公私钥文件存放在哪里.根据传统我们会把它放在~/.ssh里面.如果你不想追随这个传统, 你可能给花些时间游说那些ssh程序.至于公私钥的名字, 用默认的id_rsa吧,道理是一样的. 接下来输入一个口令,用来保护这个私钥. 我强烈建议你输入这个口令而不是让它为空(稍后我会解释的). 现在公私钥生成好了, 私钥(identification)被保存成了id_rsa, 公钥(public key)被保存成id_rsa.pub. 注意: 一定要保护好你的私钥,他就像你家里存家底的保险柜的钥匙一样重要. 现在把doggy.pub拷贝到服务器上去, 并且将其内容追加到一个叫~/.ssh/authorized_keys的文件里去
[jianingy@nby:~]cat /home/jianingy/.ssh/doggy.pub|ssh 192.168.1.9 "
cat - >> ~/.ssh/authorized_keys"
好现在试试看ssh登录吧. 如果你想了解更多可以试试看用ssh -v登录.
[jianingy@nby:~]ssh qian.jianingy.com
现在系统提示
Enter passphrase for key '/home/jianingy/.ssh/id_rsa':
现在输入你的passphrase, 然后就能成功登录了.的确, 到现在我们还不能无密码登录, 请再耐心点. 有个特例是, 如果你使用了空的passphrase, 那么现在已经可以无密码登录了.但是我也必须提醒你这是很不安全的做法,一旦有人复制了你的passphrase, 它就真的成了机房"任我行"了. 使用ssh-agent提供私钥 接下来是最关键的部分. 前面我们把输入密码变成了输入passphrase, 这没有带来任何方便.但是,要知道有个家伙能帮助我们自动输入这个passphrase(只是看起来像是自动输入而已). 我们只要输入一次passphrase, 以后的工作就可以交给那家伙了. 它就是ssh-agent(据我所知他和agent smith没有太多关系). 运行ssh-agent吧
[jianingy@nby:~]eval `ssh-agent`
[jianingy@nby:~]ssh-add
这里会提示输入一次passphrase:
[jianingy@nby:~]ssh-add
Enter passphrase for /home/jianingy/.ssh/id_rsa:
Identity added: /home/jianingy/.ssh/id_rsa (/home/jianingy/.ssh/id_rsa)
好了,现在再次登录服务器, 我们已经没有密码的烦恼了.至于为什么要用这么奇怪的方式运行ssh-agent, 你可以试着在命令行上输入一个ssh-agent回车, 看看输出什么你就会明白了.
复用已经存在的ssh-agent
如果你看了上面直接运行ssh-agent的输出,你应该已经明白了ssh和ssh-agent是如何相互了解的. 没错, 通过环境变量ssh知道了与ssh-agent通信的unix socket在哪里.然而当我们打开一个新的终端时我们必须要重新设置这个环境变量.做为一个慵懒的系统管理员,这是不可忍受的.所以我用perl写了这个脚本, 他可以找到以前的ssh-agent.
相关文章推荐
- [最简单的] ssh安全的免密码自动登录 支持多台服务器间通信
- ssh连接原理介绍( 无密码连接登录的原理)
- 如何用一次性密码通过 SSH 安全登录 Linux
- Mac 下配置 SSH 免密码安全登录
- ssh高级安全登录--开启密钥认证,禁用密码登录
- ssh无密码登录最简单的方法
- SSH无密码登录:只需两个简单步骤 (Linux)
- CentOS SSH安全和配置无密码登录
- SSH无密码安全登录
- 在Linux下设置最简单的ssh安全自动登录
- 如何用一次性密码通过 SSH 安全登录 Linux
- 简单修复MacOS High Sierra 允许 Root 用户无密码登录的安全 Bug
- 搭建ssh无密码远程登录的安全(ssl)shell script
- ssh连接原理介绍( 无密码连接登录的原理)
- ssh高级安全登录--开启密钥认证,禁用密码登录
- 如何用一次性密码通过 SSH 安全登录 Linux
- 如何用一次性密码通过 SSH 安全登录 Linux