让你的服务器免输入密码(SSH-KEY连接)

常常使用ssh登陆远程服务器的朋友们可能常常有这样的烦恼

我们需要在登陆的时候输入密码


闪动的光标,没法看到的输入内容,过时不候的Timeout等等不友好的交互对于一个急性子懒人来说简直是烦到骨头痒痒,常常让人怀疑这台远程服务器是不是自己亲生的(显然不是)

当然这也有一个解决办法,就是通过使用SSHkey来实现的免密码登陆

接下来你需要准备

  • 一台本地电脑(就是你目前手里这台)
  • 一台远程服务器

接下来需要先得到本机公钥,一般情况下电脑本机是自带ssh的,你可以在命令行工具中输入ssh -V如果显示了版本号那说明ssh存在.如果本机不存在你可以尝试着brew install ssh(mac) 或者sudo apt-get install ssh(ubuntu)其他系统请百度一下~

如果上一步发现本机存在ssh的话,那么接下来查看一下我们是否创建了公钥,在根目录中cd .ssh查看是否有ssh的隐藏文件夹并且查看文件夹内容

(由于我已经创建过我的公钥,所以完成所有结果后是这样的)

如果你的ssh文件夹不存在就请在根目录下mkdir .ssh创建一个.ssh文件夹

然后输入ssh-keygen命令,系统会提示你rsa文件存储目录,直接回车确认

系统会提示要求你输入两次密码(每当你需要使用你的公钥时都需要输入这个密码),建议直接留空回车

如果一切顺利,此时你的.ssh文件夹中应该已经存在xxx_rsa和xxx_rsa.pub两个文件了,.pub文件顾名思义就是我们所要的公钥文件

接下来同样的步骤检测远程服务端是否存在ssh程序

如果存在的话暂且不用生成公钥等操作,直接在.ssh文件夹中vi authorized_keys并写入本机xxx_rsa.pub中的内容(把本级公钥内容复制到远程服务器上)

一般的公钥内容类似

ssh-rsa hhhhhhhhhhhhhhhhhcaibugaosunigongyuehhhhhhhhhhmsHOSpWeqns7o3tle0Ln1GMmPpdFph/owa7vj5/JYSOCBX8c+gGFyJeAMHGTs1fnHhGZRl5mzu8mWIv+qJnDxRmE/jBtuNXzSrPeZ2Cz86U+DfWtXVRyEl9XoIotX+GZ/zPxvPoMoItWD3UL6aA8McCX/PE7BLFA4B1Nl+mefTVpHH39AqcyqkcAJxntoqeNU3IwaM7sx/J7ONrFxp9Z3fjVR root@lee-perfect

这种格式

保存文件后执行chmod 600 authorized_keys来提升这个文件的权限

完成一切后你可以试着在本机登录服务器,如果一切顺利,你将会怀念输入密码的日子

还没完....

如果想进一步偷懒(比如登陆远程服务器仍现需要输入一大串字符类似我的ssh root@xxx.xxx.xxx.xxx),你还可以尝试使用快捷操作

在你的终端中输入vi ~/.bashrc此时因为我使用zsh(绝对神器建议安装brew install zsh)所以我输入vi ~/.zshrc

这里打开了zsh的配置页面(同理bash的配置页面)

在最后一行加入alias myubuntu="ssh xx.xx.xxx.xxx"并保存文件(其中myubuntu即为你的快捷命令,可以自定义.特别注意快捷命令和=之间没有空格)

然后推出编辑器并执行命令. ~/.bashrc(我的是zshrc)

终于大功告成,下次登录远程服务器只需要输入"myubuntu"即可直接登陆