CentOS 6 SSH 实现免密登录

CentOS 6 SSH 免密登录

https://www.tecmint.com/ssh-p…

步骤:

  1. 在本地生成密钥
  2. 把生成的公共密钥添加到服务器中
  3. 配置服务器端ssh,允许使用密钥登录

前提: 你已经可以用密码通过
SSH 登录服务器了

本篇文章中我使用的是Mac自带的 terminal 其它终端类似,只要知道原理就没问题了。

如果有些地方不太明白,可以去查看上面的原文

1. 在本机生成密钥

ssh-keygen -t rsa

《CentOS 6 SSH 实现免密登录》

此时,在 .ssh/ 目录下会多出两个文件:

Mac-mini:~ kyle$ ls -al .ssh/
total 24
drwx------   5 kyle  staff   170 Aug 20 22:41 .
drwxr-xr-x+ 47 kyle  staff  1598 Aug 20 22:05 ..
-rw-------   1 kyle  staff  1679 Aug 20 22:41 id_rsa
-rw-r--r--   1 kyle  staff   401 Aug 20 22:41 id_rsa.pub
-rw-------   1 kyle  staff   803 Aug 17 19:27 known_hosts

2. 把生成的公共密钥添加到服务器端

ssh 登录 服务器,在服务器用户根目录中新建 .ssh/ 文件夹,并修改文件夹权限 700

# 已登录服务器,在服务器端操作
mkdir .ssh
chmod 700 .ssh

上传本地公共密钥到服务器上

不要手动复制粘贴
id_rsa.pub 中的内容,是没用的,粘贴后的大小是不一样的。

# 本地操作,非服务器
cat .ssh/id_rsa.pub | ssh root@kylebing.cn -p 1122 'cat >> .ssh/authorized_keys'

# 上述操作会把本地 id_rsa.pub 中的数据 添加到 服务器端 .ssh/authorized_keys 中
# 因为我的 ssh 服务改了端口,所以在后面的语句中添加了 -p 1122,如果你的没有修改,就不用添加这个语句。后面那一块只是 ssh 语句而已。
# --------------------------
# 此时,服务器端 .ssh 里是这样的,注意文件大小

[root@host ~]# ll -a .ssh/
total 12
drwx------  2 root root 4096 Aug 20 10:11 .
dr-xr-x---. 5 root root 4096 Aug 20 09:31 ..
-rw-------  1 root root  401 Aug 20 10:15 authorized_keys

3. 配置服务器端ssh,允许使用密钥登录

编辑配置文件 /etc/ssh/sshd_config 找到这个位置,把这三行前面的 # 去掉,保存

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody

重启 ssh 服务

service sshd restart

《CentOS 6 SSH 实现免密登录》

4. 直接登录

完成正确配置之后应该是这样的:

  • 本地的 .ssh/ 目录下应该有 id_rsa 和 id_rsa.pub 两个文件
  • 服务器 .ssh/ 目录下的 authorized_keys 文件里应该有本地 id_rsa.pub 的内容
  • 服务器 /etc/ssh/sshd_config 文件中已经配置了允许使用 密钥登录

现在就可以直接登录了,不需要使用密码。

《CentOS 6 SSH 实现免密登录》

【言外】: iOS 上的终端,力荐
Termius

可以生成相应的密钥,直接生成一个密钥就可以了,然后点击相应的服务器,它会自动把公共密钥添加到服务器的 authorized_keys 文件中

    原文作者:KyleBing
    原文地址: https://segmentfault.com/a/1190000016083191
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞