一、sshd
ssh在linux中是以sshd服务的形式存在的,对ssh协议管理的开源软件是主流的openssh的工具
两种主流的加密方式:
- 对称加密(对数据加密和解密都是用同一个密钥)
- 非对接加密(公钥加密,私钥解密;使用的是不同的密钥)
二、对称加密
对称加密的强度很高,难以破解;但是当机器数量多时需要发送大量的密钥A,如果某一个密钥丢失,其他所有主机的安全性都无法得到保障了。
密钥是放在客户端上的

三、非对称加密
非对称加密就解决了对称加密的安全隐患,防止密钥丢失的问题;
使用公钥加密后的数据,只能通过对应的私钥进行解密
私钥放在服务器上,及时传输的数据被截取也无法打开
如果在第一次登陆请求时请求被拦截,将会导致客户端用户名密码被截取(使用假的公私钥),进而攻击服务器
四、ssh配置文件
ssh相关配置文件在 ~/.ssh文件中,文件主要为config id_rsa id_rsa.pub known_hostsknown_hosts:当客户端接收到服务器公钥之后,针对信任主机就存放在此文件中authorized_keys:该文件是服务器将客户端的公钥信息,保存在这个文件中(客户端免密码登录时使用)id_rsa:私钥文件id_rsa.pub:公钥文件[root@ylin .ssh]# cat known_hosts192.168.159.200 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOE5vZJkPioZz1MEQcTuuDSlRCpDDxK+Ckqv+hqW3RbbaQKEIRsg06wV4tkPjxnO2Cjk7I9C4UUH4FH51lulzmU=[root@ylin .ssh]#
sshd服务的配置文件,默认在/etc/ssh/sshd_config中
默认的sshd配置文件,如下:[root@ylin ~]# grep -Ev '^$|^#' /etc/ssh/sshd_configHostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_ecdsa_keyHostKey /etc/ssh/ssh_host_ed25519_keySyslogFacility AUTHPRIVAuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication yesChallengeResponseAuthentication noGSSAPIAuthentication yesGSSAPICleanupCredentials noUsePAM yesX11Forwarding yesAcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGESAcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENTAcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGEAcceptEnv XMODIFIERSSubsystem sftp /usr/libexec/openssh/sftp-server[root@ylin ~]#
1. 修改ssh的端口Port 22 #修改登录端口ListenAddress 0.0.0.0 #允许服务器登录的网卡地址2. 禁止root登录PermitRootLogin no #禁止root用户登录3. 禁止用密码登录,只能用被信任的机器,用公私钥进行登录PasswordAuthentication no #禁止密码登录切记完成之后不要立刻重启ssh访问,需要添加普通账号,允许免密登录登录和具有sudo权限
sudo 操作:编辑[root@ylin ~]# vim /etc/sudoers 文件,添加如下信息即可
五、免密登录
基于公钥的免密登录
1. ssh-keygen -t rsa 客户端本地生成一对公私钥 #默认直接回车即可2. ssh-copy-id root@192.168.159.250 客户端发送自己的公钥给服务器,存在authorized_keys文件中3. 登录测试,无需密码4. [root@ylin .ssh]# cat authorized_keys #查看服务器存放公钥的文件和本地生成的公钥应该一致
