客户端:
Windows
MacOS
Linux
服务器:
Linux
配置免密登陆步骤:
1.生成私钥文件
在客户端终端下输入以下命令
ssh-keygen -t rsa
每次执行 ssh-keygen -t rsa 产生的私钥文件都会不同
如果文件"~/.ssh/id_rsa"存在,会提示是否覆盖该文件,此时可选择"n"不覆盖该文件而使用已有的id_rsa文件
如果选择"y"则会重新生成"~/.ssh/id_rsa"文件。
接下来会提示输入passphrase,回车确定使用空的passphrase,再次回车确认
(这里如果输入密码的话,后续登陆每次都要输入这个密码,与未配置免密登陆没有太多区别,如果是要省去输入密码的麻烦则建议不要输入密码,回车即可)。
然后会重新生成id_rsa文件和id_rsa.pub文件(在~/.ssh目录下)
2.在终端中执行scp远程拷贝命令
scp ~/.ssh/id_rsa.pub your_username@your_server_ip:~/.ssh
将生成的id_rsa.pub文件拷贝到远程服务器的 ~/.ssh 目录下
此时还需要输入root用户密码进行访问
3.将公钥追加到授权KEY里面
在服务器终端下输入下面的命令
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
如果远程服务器上已经存在"~/.ssh/authorized_keys"文件,那么需要编辑服务器上"~/.ssh/authorized_keys"文件,将客户端机器上的"id_rsa.pub"文件内容追加到"~/.ssh/authorized_keys"文件中。
如果服务器上没有"~/.ssh/authorized_keys"文件,执行下面这条命令
cp id_rsa.pub authorized_keys
即将公钥复制为authorized_keys文件
然后即可把id_rsa.pub删掉
rm id_rsa.pub
4. 设置权限并重启ssh服务
生成authorized_keys ,修改authorized_keys权限为600 .ssh文件夹权限为700 公钥私钥权限为644后。
ssh 登陆 发现还是要输入密码。
进行了ssh -v 命令调试,发现报了访问私钥的异常。
最后排查发现 root/文件夹的权限不对。按照sshd的要求/root/ 文件夹的权限应该为700 或者755
解决方案 chmod 700 ~
5.客户端测试连接
command+N新建终端窗口,输入ssh登录命令
此时不需要再输入密码就可以访问远程服务器,scp等基于ssh的命令同样不需要密码了
6. 用于GitHub免密登录
第一步生成的id_rsa.pub文件也可以用于github的免密登录。
如何找到http://github.com上的ssh设置:右上角图标(view profile and more)=》Settings =》 SSH and GPG keys,在Key输入框中输入公钥(id_rsa.pub中的文件内容)。