ssh 是我们工作中使用的最频繁的工具了,让ssh自动连接服务器,避免每次访问都输入密码,会让你的工作变的更快捷。
ssh 的连接有两种连接认证方式,一种是用户名密码方式,另一种是使用证书认证,证书认证实际就是RSA密钥对认证。
我们要避免输入密码,就选择用密钥对来认证,方便快捷。
配置过程比较简单,只需要三步即可完成。
第一步 : 生成密钥
1) 打开shell , 执行 ssh-keygen -t rsa
2)提示输入保存密钥的文件名,我输入的是 id_rsa ,回车
3)又提示要输入保护密码,这里直接回车,不需要密码保护
4) 完成后如下图,在当前目录下会生成 id_rsa 和 idrsa.pub 两个文件,一个是rsa密钥对的私钥,一个是公钥(带.pub的)
第二步: 放置公钥
在证书认证过程中,公钥即公开的密钥,是不需要保密的,可以发给任何人。你想要谁认证你,你就给谁发一份儿,让他保存起来。后面认证的时候,用你的私钥加密一段文字,他用你的公钥能解密,解密成功了,也证明你是可信任的了。
1、公钥给GITHUB 服务器
公钥给谁,如果你要GITHUB服务器认证你,你就给github服务器,github服务器接收你的公钥的位置,是在你登录完GITHUB在网右上角的个人小图标里,进入个人账号空间,在 SSH and GPG keys 菜单里,点 New SSH Key 新增你的公钥。
把上面第一步中的 rsa_id.pub 文件中的内容完全复现到新弹出的窗口中,保存即可。
这样,GITHUB就拿到了你的公钥了。
2、公钥给你的机房中的LINUX服务器
如果你想登录你的机房中LINUX服务器,避免输入用户密码,那你把你的公钥就给这些服务器。
在服务器上公钥放哪儿呢,放到当前用户home 目录下的 .ssh 目录下的 authorized_keys 文件中,如果没有此文件,你就用你上面生成的公钥文件id_rsa.pub替换此文件即可,如果已经有,可以把你的公钥APPAND到最后即可。
注意,.ssh 目录是隐藏文件夹,进入当前用户的HOME目录后可以使用 ls -a 显示出来
ssh 登录后默认就是在你的账号home目录中的,如果你是在其它位置,可以使用 cd ~ 命令直接进入你的 当前用户home 目录下
~.ssh/authorized_keys 即为公钥文件的存放处
小技巧:可以使用 ssh-copy-id 工具直接把你本机的公钥发送到服务器端,格式如下
ssh-copy-id -i ~/.ssh/id_rsa.pub root
@192.168.0.231
这条指令把我本机用户 home 目录下的 id_rsa.pub 文件发送到 192.168.0.231 服务器root用户的 home 目录下,并添加到 authorized_keys 文件中
第三步: 放置私钥
上面一步中我们把公钥放置好了,现在该放置私钥到适合的位置。
私钥是你的保密密钥,不能让别人看到,所以需要放到你的本地,让 ssh 程序能找到并在连接的时候自动读取私钥使用。
私钥文件在你当前用户的home目录下的 .ssh 隐藏文件夹下,文件名叫 id_rsa, 即把你上面生成的私钥文件is_rsa复制到这下面即可。
~/.ssh/id_rsa 即为私钥文件的存放处
至此,所有配置都已经完成,你随意启动一个 shell ,都可以无需任何密码访问你的github仓库或你的机房服务器。
几种常见错误解决:
1、私钥文件权限过多,需要使用 chmod 600 ~/.ssh/id_rsa 收一下权限即可,这个是ssh程序为了防止私钥文件被黑客攻击,强制私钥文件必须是弱权限,如下: