每次用SSH登录服务器都要输入密码,次数多了就觉得有些麻烦,反正是自己个人用的电脑,安全应该有保障,如何能直接登录上去而不需要输入密码呢?其实一句话就讲清楚了:把自己公钥放在服务器上。
Linux客户端
ls -l ~/.ssh
看看id_rsa和id_rsa.pub这两个文件是否存在?如果不存在,那现在就来生成一对:
ssh-keygen -t rsa
一路回车到底,id_rsa和id_rsa.pub就生成了,id_rsa保存好,不要告诉别人,id_rsa.pub是公钥,这是我们要告诉服务器的东西。
现在,登录到服务器,将本地的id_rsa.pub的内容追加到服务器的~/.ssh/authorized_keys文件中即可,可以用重定向追加,也可以复制内容,打开VI,贴进去,随你便。然后就完成了,登录:
ssh -l root 服务器地址
注意:你把id_rsa.pub放在服务器哪个用户的~/.ssh目录下,就可以用哪个用户的身份登录,我是把它放在/root/.ssh下了,所以可以用root登录。
Windows客户端
Windows客户端如果用Cygwin或者MINGW64的话,那跟Linux客户端没啥差别。而我一般会用SSH Secure Shell,这是一个免费又好用的软件,事实上,我十几年前(2004年)就开始用它了,现在不知道还是否在更新,但好用依旧,强烈推荐。言归正传!
1,先按正常方式登录服务器,假设你跟我一样,用的是root账号;
2,菜单Edit -> Setting打开设置对话框,然后按下图的1、2、3步骤操作:
3,在出现的新对话框中选择2048位RSA算法:
然后下一步。
4,大约经过几秒到几十秒的运算之后,程序给你生成了一对密钥,点下一步,出现下图对话框:
给这对密钥起个名字,习惯性地,我还是称之为id_rsa,Passphrase留空。下一步。
5,出现以下对话框:
点“Upload Public key”,上传公钥到服务器。点完成。
6,公钥虽然上传到服务器了,格式跟我们之前使用的不太一样,需要转换一下,默认情况下,刚才的公钥会被上传到服务器的\root\.ssh2\目录下,现在在服务器上执行:
ssh-keygen -i -f /root/.ssh2/id_rsa.pub
就看到了公钥的输出,把这个输出的文本追加到~/.ssh/authorized_keys文件中去(不管你用重定向还是用VI都可以),保存,完成!