思路:在本地生成公钥和私钥,然后将公钥放到Linux的root(也就是~)目录下的.ssh文件夹下(隐藏文件夹),如何没有则生成一个。

ssh-keygen 用于:生成、管理和转换认证密钥。

常用参数:
-t type:指定要生成的密钥类型,有rsa1(SSH1),dsa(SSH2),ecdsa(SSH2),rsa(SSH2)等类型,较为常用的是rsa类型
-C comment:提供一个新的注释
-b bits:指定要生成的密钥长度 (单位:bit),对于RSA类型的密钥,最小长度768bits,默认长度为2048bits。DSA密钥必须是1024bits
-f filename:指定生成的密钥文件名字

1、 在Mac客户端命令行生成公钥和私钥

  1. cd ~/.ssh
  2. ssh-keygen -t rsa -f my_rsa_no_passwd -C "this is discribe you can write any thing"

之后回车两次,注:(Enter passphrase (empty for no passphrase): 可以设置密码),免密做好后首次登录要求输入一次密码,就输入这里的密码。

生成两个文件 my_rsa_no_passwd(私钥)和my_rsa_no_passwd.pub(公钥)

2、 方法一:发送公钥到CentOS服务器端

  1. scp my_rsa_no_passwd.pub user@ip:~/.ssh

如果服务器上没有.ssh文件夹,则登录服务器输入如下命令创建

  1. mkdir ~/.ssh
  2. chmod 700 ~/.ssh

3、 登陆CentOS服务器端,设置公钥文件

  1. ssh user@ip #注:此时还是需要输入密码
  2. cd ~/.ssh
  3. cat id_rsa.pub >> authorized_keys
  4. chmod 600 authorized_keys 注:必须设置成600

4、 登录来测试下:
ssh -i my_rsa_no_passwd root@ip

就这样子,成功啦。加油!

方法二:

  1. ssh-copy-id -i ~/.ssh/id_rsa.pub xiaohua@49.51.1.2 -p8888

设置好了居然用不了

二、查看系统安全日志,定位问题
执行 sudo cat /var/log/secure 查看系统的安全日志,然后在安全日志中看到SSH登录过程中提示了如下错误:

  1. Jan 13 14:20:26 VM_0_15_centos polkitd[650]: Operator of unix-process:4391:118464 successfully authenticated as unix-user:root to gain TEMPORARY authorization for action org.freedesktop.login1.reboot for system-bus-name::1.85 [reboot] (owned by unix-user:userAAA)
  2. Jan 13 14:20:26 VM_0_15_centos sshd[1277]: Received signal 15; terminating.
  3. Jan 13 14:20:26 VM_0_15_centos sshd[4294]: pam_unix(sshd:session): session closed for user userAAA
  4. Jan 13 14:21:15 VM_0_15_centos polkitd[657]: Loading rules from directory /etc/polkit-1/rules.d
  5. Jan 13 14:21:15 VM_0_15_centos polkitd[657]: Loading rules from directory /usr/share/polkit-1/rules.d
  6. Jan 13 14:21:15 VM_0_15_centos polkitd[657]: Finished loading, compiling and executing 2 rules
  7. Jan 13 14:21:15 VM_0_15_centos polkitd[657]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
  8. Jan 13 14:21:19 VM_0_15_centos sshd[1286]: Server listening on 0.0.0.0 port 22.
  9. Jan 13 14:22:43 VM_0_15_centos sshd[1610]: Authentication refused: bad ownership or modes for directory /home/userAAA/.ssh
  10. Jan 13 14:22:55 VM_0_15_centos sshd[1610]: Accepted password for userAAA from 11.11.2.161 port 3236 ssh2
  11. Jan 13 14:22:55 VM_0_15_centos sshd[1610]: pam_unix(sshd:session): session opened for user userAAA by (uid=0)

找到问题:Authentication refused: bad ownership or modes for directory /home/userAAA

后面的目录代表权限不匹配
解决:

  1. chmod g-w /home/userAAA
  2. chmod 700 ./.ssh #关键是这个,权限不能过高
  3. chmod 600 ~/.ssh/authorized_key #关键是这个,权限不能过高

分类: web

标签:   ssh   liunux