mac上配置ssh免密登录远程服务器

一般ssh登录远程服务器 都是需要账号密码的,每次登录都要输入账号密码比较麻烦,为了方便,可以配置免密登录,ssh免密登录及其原理看 这里

实现ssh免密登录关键点在于公钥和私钥

如果之前用过 GitHub 或者 GitLab 之类基于 Git 的仓库管理系统,那么你本地应该是配置过这个公钥和私钥的,这里要切记,

不用再重复配置一遍了!不用重新配置一遍了! 可能你会覆盖掉你本地用的钥匙,这样的话,你可能就连不上你之前有权限的 Git 仓库了。

如果你没配置过,我们需要先来配置下,怎么配置呢?

# 通过 mkdir 创建这个目录
mkdir .ssh
# 通过 cd 进入到该目录下
cd .ssh

额外说明: 这个.ssh 目录会在根目录下,使用   cd ~   进入根目录下, 使用  ls -a  展示根目录下所有文件以及文件夹,

就可以看到生成的  .ssh  文件,如下图:

mac上配置ssh免密登录远程服务器

然后执行

 ssh-keygen -t rsa -b 4096 -C "你的邮箱(可以随便填写)" 

一路回车到底,对于新手这里就先不要设置密码了,不然就搞得太复杂了。执行完这一步命令之后,

可以看到  .ssh  的目录下面生成了两个文件  id_rsa(私钥) 和  id_rsa.pub(公钥) ,然后开起来 ssh 代理:

 eval "$(ssh-agent -s)" 

 最后,把 ssh key 加入到 ssh 代理中

 ssh-add ~/.ssh/id_rsa 

理论上走完这一步,你本地已经有了配置好的钥匙文件,强调一下,这里要切换到本地操作,不是服务器上,在本地的根目录的 ssh 文件夹下。

通过 cat 命令打印这个公钥文件内容:

cat .ssh/id_rsa.pub 

 

然后选中整段内容,复制一下,再来到服务器上。

然后,这一步很重要哈!这一步是为了,以后我们可以从 GitHub 或者 GitLab 之类的仓库获得仓库的权限,因此我们要把刚才生成私钥的过程重复一遍,这一步不做是不影响我们配置无密码登录的,再把刚才的流程走一遍,一模一样的步骤:

ssh-keygen -t rsa -b 4096 -C "name@email.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

然后,通过简单的 vim 命令,我们需要创建一个授权文件:

vi .ssh/authorized_keys 

 

会打开一个编辑页面,不要做任何输入,切记,不要做任何输入,同时要保证当前的输入法切换到英文输入状态,然后按下键盘上的 i 键后,

command+v 把刚才复制的公钥拷贝进来,再按一下键盘上的 ESC 退出键确保回到编辑状态,然后同时按下 shift 和 冒号键,最后输入 wq! 回车,

这个文件就自动创建了。这是简单的 vim 快捷键,大家还是要多少了解一点点的,才能方便在服务器上增改文件。

这个操作很容易由于不熟悉 Linux 下的 vim 编辑而出错,要多体会几遍,再动手做。

如果没有生效,可以对该文件进行一个 600 可读授权,再重启下 ssh 服务:

chmod 600 ~/.ssh/authorized_keys
sudo service ssh restart 

通过 ssh name@xx.xx.xx.xx 就直接登录了,就不需要输入密码了,如果这一步没有成功,可以按照这之前的顺序,再仔细比对一遍,看有没有遗漏项。

遇到的问题:

ssh 连接的时候 提示   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!  如下图所示

mac上配置ssh免密登录远程服务器

这种情况需要在本地  .ssh  目录下 删除  anthorized_keys  , 删除的命令是   rm -rf authorized_keys , 然后重新连接即可

 mac上配置ssh免密登录远程服务器