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

使用一种被称为"公私钥"认证的方式来进行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的,否则笨笨会说找不到密钥。