李华堂

李华堂的博客

他的个人主页  他的博客

再谈ssh的'不输入密码'

李华堂  2009年12月09日 星期三 08:29 | 1736次浏览 | 3条评论

我们在远程管理*inx的时候,为了方便,也为了更加安全,通常都会采用key的方式进行密码认证.如果生成key的时候,没有使用'短语'就达到了ssh登陆不用输入密码的要求.windows下的各种客户端软件都支持key登陆的方式.当然在linux也可以用key进行登陆的.就是在用户的宿主目录下,创建.ssh/id_rsa.这个文件名是默认的,当然如果有个人喜好的话,可以从配置文件里修改,或者远程连接的时候进行指定.这些本身都是没啥问题的.问题是笔者最近将办公机换成了ubuntu.看过<<linux远程管理的屠龙刀(终极篇)>>的朋友应该记得:SecureCRT有一个功能就是当你远程登陆了一台机器以后,从这台机器再登陆其它的机器的时候,SecureCRT会自动拿你的key去验证,而不是用你正这使用的这台机器的.这样会极大的提高工作效率.

      我们在远程管理*inx的时候,为了方便,也为了更加安全,通常都会采用key的方式进行密码认证.如果生成key的时候,没有使用'短语'就达到了 ssh登陆不用输入密码 的要求.windows下的各种客户端软件都支持key登陆的方式.当然在linux也可以用key进行登陆的.就是在用户的宿主目录下,创建.ssh/id_rsa.这个文件名是默认的,当然如果有个人喜好的话,可以从配置文件里修改,或者远程连接的时候进行指定.这些本身都是没啥问题的.问题是笔者最近将办公机换成了ubuntu.看过<< linux远程管理的屠龙刀(终极篇) >>的朋友应该记得:SecureCRT有一个功能就是当你远程登陆了一台机器以后,从这台机器再登陆其它的机器的时候,SecureCRT会自动拿你的key去验证,而不是用你正这使用的这台机器的.这样会极大的提高工作效率.难道这么'高级'的功能ssh本身实现不了?在google半天无果以后,笔者还是走了一条老路,依靠系统自带的man和info再加上半天的试验,终于明白了个中的缘由,不敢独享:
      要想实现这个功能其实很简单,先在ssh的客户端配置文件中启用转发.
      vi /etc/ssh/ssh_config
      ForwardAgent yes
      然后将你要使用的key加入到ssh的agent.
      ssh-add ~/.ssh/id_rsa
      这样就实现的刚才说的功能.
      这里要特别指出的就是这个ssh_config文件.以前修改ssh服务端配置文件sshd_config的时候就有注意到过这个文件.但是一直没细研究是做什么用的.现在明白了:ssh_config里配置的东西是你在使用ssh命令的时候默认配置文件.在这里就不凭空细说了,希望在后面的<<从ssh服务谈服务器安全>>中能提到.
      另外再暴一个不可多得的小甜点:在ubuntu的soft center意外的捡了一款软件clusterssh.这个软件实现的功能就是<< linux远程管理的屠龙刀(终极篇) >>里提到的交互窗口的功能.SecureCRT在多台机器上同时执行命令的时候你只能看到一台机器的执行结果,另一台执行的时候即使出错了你也不知道.而通过clusterssh,它会把你要同时操作的机器以多个窗口的方式在你的屏幕上排列开来.也由于这一点,个人觉得这个软件适合同时管理5-15台机器时的场景.你可以很直观的看到每个命令的执行结果.还可以同时看到你输入的每个字符在多个窗口同时出现哟,很cool很强大的软件.赶快试试吧:)

 

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
肖鑫鑫

回复 肖鑫鑫  2009年12月15日 星期二 23:31

我目前的做法是本地脚本自动登录,同样无须输入密码

0条回复

胡钧

回复 胡钧  2009年12月09日 星期三 14:44

事实上,如果要真正在大规模范围内管理SSH接入的认证的话,用x.509 certificate的方式更具备扩展性。相当于用CA做集中式的认证管理。

0条回复

刘磊(V.L.)

回复 刘磊(V.L.)  2009年12月09日 星期三 10:45

SecureCRT推广,呵呵。

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号