一、sshd

ssh在linux中是以sshd服务的形式存在的,对ssh协议管理的开源软件是主流的openssh的工具

两种主流的加密方式:

  • 对称加密(对数据加密和解密都是用同一个密钥)
  • 非对接加密(公钥加密,私钥解密;使用的是不同的密钥)

二、对称加密

对称加密的强度很高,难以破解;但是当机器数量多时需要发送大量的密钥A,如果某一个密钥丢失,其他所有主机的安全性都无法得到保障了。
密钥是放在客户端上的
image.png

三、非对称加密

非对称加密就解决了对称加密的安全隐患,防止密钥丢失的问题;
使用公钥加密后的数据,只能通过对应的私钥进行解密
私钥放在服务器上,及时传输的数据被截取也无法打开
image.png
如果在第一次登陆请求时请求被拦截,将会导致客户端用户名密码被截取(使用假的公私钥),进而攻击服务器

四、ssh配置文件

  1. ssh相关配置文件在 ~/.ssh文件中,文件主要为config id_rsa id_rsa.pub known_hosts
  2. known_hosts:当客户端接收到服务器公钥之后,针对信任主机就存放在此文件中
  3. authorized_keys:该文件是服务器将客户端的公钥信息,保存在这个文件中(客户端免密码登录时使用)
  4. id_rsa:私钥文件
  5. id_rsa.pub:公钥文件
  6. [root@ylin .ssh]# cat known_hosts
  7. 192.168.159.200 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOE5vZJkPioZz1MEQcTuuDSlRCpDDxK+Ckqv+hqW3RbbaQKEIRsg06wV4tkPjxnO2Cjk7I9C4UUH4FH51lulzmU=
  8. [root@ylin .ssh]#

sshd服务的配置文件,默认在/etc/ssh/sshd_config中

  1. 默认的sshd配置文件,如下:
  2. [root@ylin ~]# grep -Ev '^$|^#' /etc/ssh/sshd_config
  3. HostKey /etc/ssh/ssh_host_rsa_key
  4. HostKey /etc/ssh/ssh_host_ecdsa_key
  5. HostKey /etc/ssh/ssh_host_ed25519_key
  6. SyslogFacility AUTHPRIV
  7. AuthorizedKeysFile .ssh/authorized_keys
  8. PasswordAuthentication yes
  9. ChallengeResponseAuthentication no
  10. GSSAPIAuthentication yes
  11. GSSAPICleanupCredentials no
  12. UsePAM yes
  13. X11Forwarding yes
  14. AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
  15. AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
  16. AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
  17. AcceptEnv XMODIFIERS
  18. Subsystem sftp /usr/libexec/openssh/sftp-server
  19. [root@ylin ~]#
  1. 1. 修改ssh的端口
  2. Port 22 #修改登录端口
  3. ListenAddress 0.0.0.0 #允许服务器登录的网卡地址
  4. 2. 禁止root登录
  5. PermitRootLogin no #禁止root用户登录
  6. 3. 禁止用密码登录,只能用被信任的机器,用公私钥进行登录
  7. PasswordAuthentication no #禁止密码登录
  8. 切记完成之后不要立刻重启ssh访问,需要添加普通账号,允许免密登录登录和具有sudo权限
  1. sudo 操作:
  2. 编辑[root@ylin ~]# vim /etc/sudoers 文件,添加如下信息即可

五、免密登录

基于公钥的免密登录
image.png

  1. 1. ssh-keygen -t rsa 客户端本地生成一对公私钥 #默认直接回车即可
  2. 2. ssh-copy-id root@192.168.159.250 客户端发送自己的公钥给服务器,存在authorized_keys文件中
  3. 3. 登录测试,无需密码
  4. 4. [root@ylin .ssh]# cat authorized_keys #查看服务器存放公钥的文件和本地生成的公钥应该一致

六、selinux