前言
今天使用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高速缓存中:
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 文件同样也要限制,如果日志中提示这两个的问题,可以通过如下方式进行修改:文章来源:https://www.toymoban.com/news/detail-441601.html
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
总结
程序员遇到问题在所难免,多总结多记录就好了。文章来源地址https://www.toymoban.com/news/detail-441601.html
到了这里,关于Mac使用SSH 免密登陆(踩坑)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!