Mac使用SSH 免密登陆(踩坑)


前言

今天使用mac进行ssh免密登陆,期间遇到了一些问题,mac和windows的操作步骤有点不一样。踩了个坑~!


一、SSH登陆是什么?

ssh 登录分两种,一种是基于口令(账号密码),另外一种是基于密钥的方式。
基于口令,就是每次登录输入账号和密码,显然这样做是比较麻烦的,这里是介绍如何基于密钥实现免密登录。

二、使用步骤

1.使用ssh-keygen生产密钥对

最好是到ssh的目录下去操作,这样会在ssh的目录下生成密钥对:

代码如下(示例):

cd ~/.ssh
ssh-keygen -t rsa -f cvm   
# -t 是要使用的算法
# -f 要生成的文件名
# 输入命令后两次直接回车

在这里插入图片描述
执行完之后,会在目录~/.ssh下生成对应的密钥对,图中圈起来的就是生成的密钥对,还有就是其它的密钥对(github,gitee,gitlab)可以忽略
在这里插入图片描述

2.将公钥追加到要免密登陆的服务器中

使用 ssh-copy-id 命令将上一步生成的公钥(.pub结尾)上传到服务器中,期间需要输入一次服务器的密码,因为我之前弄了免密,所以这里不需要输入。

代码如下(示例):

ssh-copy-id -i cvm.pub root@ip
# -i 指定要添加的公钥的文件名 
# root  免密登陆的用户名
# ip	服务器的ip

在这里插入图片描述
ssh-copy-id 会将指定的文件内容追加到服务器 ~/.ssh/authorized_keys 文件中,可以去服务上查看看看,我这里之前加了一个,所以有两个。
在这里插入图片描述

2.ssh-add(踩坑的点)

网上的教程执行完第一步就可以免密登陆了,但是我的mac一直都不行,重试好几次也不行,最后搜索关键词 mac ssh 免密登陆 才解决的。 我一度怀疑是mac的问题,但是看其他人有的mac又不需要加这一步。 无语了~
将第一步生产的密钥(cvm)加入到ssh高速缓存中:

扫描二维码关注公众号,回复: 15263380 查看本文章
ssh-add -K cvm

ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中,从而提高ssh的认证速度。
执行完这两部,就可以进行免密登陆了

ssh root@ip

在这里插入图片描述

3.客户端给服务器设置别名

有时候服务器的ip太难记了又或者服务器太对了记不住,这时候就可以给各个免密的服务器设置一个别名,之后直接 ssh 别名 就可以实现登陆服务器,简直不要太爽了~

回到mac的~/.ssh目录,我这里有个config文件,没有的话可以手动创建,就是在这个配置文件里面设置别名的:

Host cvm
HostName ip
User root
IdentityFile ~/.ssh/cvm


# Host	别名的名称
# HostName	服务的ip
# User	用户,这里是root
# IdentityFile  密钥的路径
# 这里还有一个Port属性 是端口,默认是22,这里没写

config里面是可以设置多个别名的,我这里有github等其他的也在这里设置了:
在这里插入图片描述
之后就可以直接使用 ssh cvm 免费登陆了,非常的方便!
在这里插入图片描述

4.拓展

SSH进行认证的过程中除了对用户目录有权限要求外,对服务器上的 .ssh 文件夹和 authorized_keys 文件同样也要限制,如果日志中提示这两个的问题,可以通过如下方式进行修改:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

总结

程序员遇到问题在所难免,多总结多记录就好了。

猜你喜欢

转载自blog.csdn.net/Jimi_zy/article/details/127673143