让你的服务器免输入密码(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"即可直接登陆