mac上配置ssh免密登录远程服务器
一般ssh登录远程服务器 都是需要账号密码的,每次登录都要输入账号密码比较麻烦,为了方便,可以配置免密登录,ssh免密登录及其原理看 这里
实现ssh免密登录关键点在于公钥和私钥
如果之前用过 GitHub 或者 GitLab 之类基于 Git 的仓库管理系统,那么你本地应该是配置过这个公钥和私钥的,这里要切记,
不用再重复配置一遍了!不用重新配置一遍了! 可能你会覆盖掉你本地用的钥匙,这样的话,你可能就连不上你之前有权限的 Git 仓库了。
如果你没配置过,我们需要先来配置下,怎么配置呢?
1 2 3 4 | # 通过 mkdir 创建这个目录 mkdir .ssh # 通过 cd 进入到该目录下 cd .ssh |
额外说明: 这个.ssh 目录会在根目录下,使用 cd ~ 进入根目录下, 使用 ls -a 展示根目录下所有文件以及文件夹,
就可以看到生成的 .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! 如下图所示
这种情况需要在本地 .ssh 目录下 删除 anthorized_keys , 删除的命令是 rm -rf authorized_keys , 然后重新连接即可
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步