赞
踩
今天使用mac进行ssh免密登陆,期间遇到了一些问题,mac和windows的操作步骤有点不一样。踩了个坑~!
ssh 登录分两种,一种是基于口令(账号密码),另外一种是基于密钥的方式。
基于口令,就是每次登录输入账号和密码,显然这样做是比较麻烦的,这里是介绍如何基于密钥实现免密登录。
最好是到ssh的目录下去操作,这样会在ssh的目录下生成密钥对:
代码如下(示例):
cd ~/.ssh
ssh-keygen -t rsa -f cvm
# -t 是要使用的算法
# -f 要生成的文件名
# 输入命令后两次直接回车
执行完之后,会在目录~/.ssh下生成对应的密钥对,图中圈起来的就是生成的密钥对,还有就是其它的密钥对(github,gitee,gitlab)可以忽略
使用 ssh-copy-id 命令将上一步生成的公钥(.pub结尾)上传到服务器中,期间需要输入一次服务器的密码,因为我之前弄了免密,所以这里不需要输入。
代码如下(示例):
ssh-copy-id -i cvm.pub root@ip
# -i 指定要添加的公钥的文件名
# root 免密登陆的用户名
# ip 服务器的ip
ssh-copy-id 会将指定的文件内容追加到服务器 ~/.ssh/authorized_keys 文件中,可以去服务上查看看看,我这里之前加了一个,所以有两个。
网上的教程执行完第一步就可以免密登陆了,但是我的mac一直都不行,重试好几次也不行,最后搜索关键词 mac ssh 免密登陆 才解决的。 我一度怀疑是mac的问题,但是看其他人有的mac又不需要加这一步。 无语了~
将第一步生产的密钥(cvm)加入到ssh高速缓存中:
ssh-add -K cvm
ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中,从而提高ssh的认证速度。
执行完这两部,就可以进行免密登陆了
ssh root@ip
有时候服务器的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 免费登陆了,非常的方便!
SSH进行认证的过程中除了对用户目录有权限要求外,对服务器上的 .ssh 文件夹和 authorized_keys 文件同样也要限制,如果日志中提示这两个的问题,可以通过如下方式进行修改:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
程序员遇到问题在所难免,多总结多记录就好了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。