ssh配置RSA公钥实现免密登录
最近项目组要搭建git服务器,在这儿用到了RSA免密登录,遇到了一个坑,在此记录一下,废话不多说,下面是配置步骤:
1.本机生成公钥和私钥对
我这儿本机用的是windows系统
打开git-bash命令行窗口,执行命令:
ssh-keygen -t rsa
一路回车(不要输入任何东西,直接回车),此时会在用户目录下生成.ssh目录,目录下会产生两个文件:
id_rsa(私钥)、id_rsa.pub(公钥)
2.配置服务器端授权文件
将步骤1中生成的公钥文件(id_rsa.pub)中的文本内容拷贝一下,
在服务器端对应的用户目录下新建.ssh目录,比如我这儿用户名为git,用户目录为
/home/git
则在新建目录/home/git/.ssh,在.ssh目录下面新建authorized_keys文件(如果已存在,直接vi命令打开编辑),将步骤1中生成的本机公钥文件(id_rsa.pub)中的文本内容拷贝到authorized_keys中,保存即可。
至此,配置结束,以下是我遇到的一个坑
网上还有很多教程要配置服务器端.ssh目录和authorized_keys授权文件的权限,本人没有遇到这个问题,各位如果有问题不妨参考网上教程配置下权限,不过我这里遇到一个坑,一直无法免密登录,总是提示输入密码,网上各种百度、谷歌,最后我怀疑是否是我服务器端分区的问题,我是新买的一块磁盘,将磁盘挂载到了/home盘符下,而我们知道linux系统用户的默认目录都在/home下,比如git用户的主目录是/home/git,也就是说我这里的用户目录的文件其实都是在新挂载的磁盘分区下,而不是系统分区下(盘符为/),我个人怀疑是linux在做ssh登录校验时,无法读取非系统分区的authorized_keys授权文件导致rsa免密登录失效的,经过我重新挂载磁盘,将磁盘挂载到了其他盘符下,令/home还是属于系统磁盘,果然奏效,真是个大坑,各位有类似情况的可以看看是不是也属于我这种情况。
PS:
linux无法读取非系统分区下的authorized_keys授权文件只是我的一个猜想,也有可能是我挂载的分区磁盘的文件系统格式不一致导致的,我是格式化成的ext4格式,具体原因还有待验证。