[Linux 安全] 使用Public Key (OpenSSH) 不用密码登陆

Nov 14th, 2008

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2008/11/14/public-key-ssh.html

 

第三次写ssh入侵防护的问题的文章了,其实方法使用了很久了.这是一个很没有技术的技术.唉.研究这么多参数参数参数……….

使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)
然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了

步骤如下:
本地
先要在本地生成一个 rsa 的公共 key .然后 copy 到远程你要认证的服务器创建 key

$ ssh-keygen -t rsa

拷贝key到服务器端

$ cat /root/.ssh/id_rsa.pub | ssh root@远程服务器ip 'cat - >> ~/.ssh/authorized_keys'

还有一个更加简单的方法

$ ssh-copy-id  -i /root/.ssh/id_rsa root@xxx,xxx,xxx,xxx

 
远程
在远程服务器要做的事情,如果是使用的 ssh-copy-id 就没有必要操作这个了,所以非常推荐使用这个来操作

$ chmod 600 ~/.ssh/authorized_keys       

 //权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能

   Public-key 认证机制比密码要安全, 因为密码不在网络上传输. 而且可以是用加密的方式存储的,为了安全,也可以设置一个passphrase,这样,别人拿到密钥也没有用.

如果以上步骤不能实现不输密码登陆的话,需要检查sshd服务的Pubkey认证功能是否默认打开
/etc/ssh/sshd_config:
PubkeyAuthentication yes          
如果修改后记的要重起你的ssh服务,用ssh –v来显示详细的登陆过程.

最后一步
建议不使用静态密码,我们都使用key了,修改如下内容可以关闭使用密码认证:
UsePAM yes

UserPAM no
关闭Pam的传统密码认证.

如果使用Windows中的Putty

如果想使用putty,因为ssh-keygen生成的SSH2和putty的key格式不同,无法直接使用,必须用 puttygen.exe 转换一下:
把Linux的id_rsa想法copy到windows中,运行puttygen.exe,选择菜单Conversions->Import key然后save private key,就可以使用这个private key设置putty了.

Windows中设置Putty使用key

1) 启动Putty,设置好session的各项参数(如果以前已经设置过,那么load一下),然后从左边选择“SSH->Auth”,点击 Browse 按钮,选择 key.ppk 文件.
2) 设置 auto-login 用户名,Connection -> Data -> Auto-login username
3) 再从左边选择 Session,然后点击 Save 按钮把修改保存下来.然后点击Open 按钮就可以登录了.
如果上面的操作都没有问题,那这时应该就自动登录了,无需输入密码.

putty的密钥转换成SecureCRT的密钥

以前用的是putty,生成了PUB/PRIVATE KEY的,现在用puttygen.exe load private key,然后用Conversions导出到openssh格式的private key,名为identy,接着把pubkey也导出来,叫identy.pub,放到相同的目录下,最后在securecrt的session里指定 private key就OK了,一定要弄成xx xx.pub的,否则笨笨会说找不到密钥.

 

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
  1. xi2008wang
    Nov 14th, 2008 at 09:11
    Reply | Quote | #1

    不错, 很容易懂

  2. sc
    Dec 8th, 2008 at 23:20
    Reply | Quote | #2

    去看看ssh-agent和ssh-add吧

  3. Tairan
    Mar 4th, 2009 at 10:14
    Reply | Quote | #3

    收到,去试试是否方便使用~

  4. dalviker
    Dec 21st, 2009 at 16:14
    Reply | Quote | #4

    谢谢。找了很多地方,在你这里找到答案。