MAC下生成密钥,并使用ssh密钥登录
步骤一:打开终端,输入:
ssh-keygen -t rsa -C "youremail@qq.com"
一路欢快的回车,所有默认都不用改,就可以生成密钥了。
引号内是你唯一Email,这里可以作为以后Git远程仓库使用。
步骤二:查看生成的公钥和私钥:
ls ~/.ssh
可以看到两个密钥文件:id_rsa(私钥) id_rsa.pub(公钥) ———— 我的本机的~是/Users/linfeng,可以通过pwd查看当前所在的路径
步骤三:登录远程服务器,在~目录下创建.ssh文件夹,要先切换到/root/目录下哦。(此时root账号的家目录就是/root/)
mkdir .ssh
————再补充一个知识点,~表示当前用户的家目录,对于root来说,就是/root/,对于普通用户来说,就是/home/user/,可以切换到~并使用pwd查看。所以如果是普通用户,则需要把.ssh建在/home/user/下。
步骤四:放置公钥到Linux服务器的用户家目录的.ssh目录下,并重命名为authorized_keys。使用scp命令:
scp ~/.ssh/id_rsa.pub root@121.42.xxx.xxx:/root/.ssh/authorized_keys
步骤五:服务器上切换到.ssh目录下,对authorized_keys和.ssh赋予权限:
chmod 700 .ssh chmod 600 authorized_keys
————请注意,此时.ssh目录的权限应该是700,只有属主有读、写、执行的权限。
步骤六:免密码登录到服务器:——无需输入密码了。
ssh root@121.42.xxx.xxx //方式一 ssh -l root 121.42.xxx.xxx //方式二
——请注意,这时候只是可以免密码登录,但是没有密钥的人(如其他人的电脑),还是能通过密码登录。
——这步请直接测试是否可以免密登录,如果可以的话,第七步第2)就可以不用操作。
步骤七:设置禁止密码登录
1)打开ssh配置文件:
sudo vim /etc/ssh/sshd_config
2)去掉以下的注释:——其实不注释,我的机器上默认值也是yes,因为在第六步的时候,我已经可以免密码登录了。所以为可选项
#RSAAuthentication yes // RSA认证,我的机子上没有这个选项,也不需要。 #PubkeyAuthentication yes // 公钥登录,这个好像不需要注释掉也没事。 #AuthorizedKeysFile %h/.ssh/authorized_keys // 验证文件的位置,这个默认是开启的。
——我的实践中,这项全部都不需要修改
3)禁止密码和 root账号登录,修改以下为no:
PasswordAuthentication no // 禁止密码登录。原先为PasswordAuthentication yes PermitRootLogin no //禁止 root 登录,看情况是否需要。原先为PermitRootLogin yes
4)重启ssh服务
service ssh restart //或者service ssh reload,有可能碰到并未开启ssh服务的报错,执行下面的那句。 /etc/init.d/sshd restart //上面一句无法执行的时候,执行这句。 systemctl restart sshd //centOS7以上请使用这句
八、其他:
1、指定秘钥和端口登录:(正常端口都是 22,你改了才需要指定),秘钥最好也用同一个
ssh -i ~/.ssh/hk_sshkey username@121.42.xx.xx -p 23
2、添加其他机器登录使用一个用户登录。
将公钥内容添加到服务器 authorized_keys 里面即可
————占位符