ssh 免密码登陆

 

服务器被登陆的时候,需要用户提供它的密码。

 

ssh someuser@somehost

 

有时人们会觉得输入密码比较麻烦。有时服务器是不想让人直接登陆,但是又必须允许部分人登陆进来。

 

这个时候,服务器提供了一个方式,需要客户端提供一个证明他是合格的登陆者的资质。当然了,客户端登陆的时候会把另外一些信息和这个资质进行匹配。

 

这基本上就是RSA非对称加密的公钥和私钥。

 

===========================================

 

服务器端必须要打开sshd服务,并且

/etc/ssh/sshd_config文档中,如下代码不能被注释掉:

RSAAuthentication yes  

PubkeyAuthentication yes  

AuthorizedKeysFile      .ssh/authorized_keys

 

客户需要通过ssh-kengen生成两个文件,一个公钥,带pub,一个私钥,不带pub

  1. $ ssh-keygen -t rsa -b 2048 -f server_rsa -C "xxx@company"  

-t rsa 表示使用RSA加密得法,你也可以使用dsa代替。-b 2048表示使用2048位加密,如果你对安全性要求更高,可以使用4098位加密。-f server_rsa表示要生成的文件名为server_rsa(密钥)和server_rsa.pub(公钥)。最后的-C "xxx@company"是注释,会追加在造成的Key文件尾部,通常会写上用户或机器的身份信息备查。之后输入RSA Key的使用密码并确认,ssh-keygen命令就会造成一对密钥对。把生成的密钥对拷贝到本机的~/.ssh/下

***以上server_rsa在windows下最好改为id_rsa,不知道为什么

 

然后把这个公钥的内容,复制到服务器上的 ~/.ssh/authorized_keys文件的末尾,成为独立的一行。

 

当然了,要保证.ssh文件夹的权限为700,authorized_keys文件的权限为600。

 

这样一来,客户端就可以ssh免密码登陆了,这个时候服务器上对应的用户的密码都可以删除了(无法远程登陆了,不是删除用户)。

 

git私有服务器也可以利用以上方式。

 

如果登录不上去可以通过

ssh -v user@somehost

查看原因。可能是生成的私钥的名称不对,改为id_rsa应该就可以了

 

posted @ 2017-06-14 17:32  VoctrALs  阅读(157)  评论(0编辑  收藏  举报