SSH远程登陆方式
1.基于账户密码远程登陆
知道服务器的IP以及端口,同时知道SSH连接账号和口令、就可以通过ssh客户端登陆到这台远程主机,联机过程中所有传输的数据都是加密的。
2.基于密钥远程登录
默认情况下,通过ssh登陆到远程的系统,需要提供远程系统上的账号与密码,但为了降低密码泄露的机率和提高登陆的方便性,可以使用基于密钥的验证
ssh key 使用非对称加密方式生产公钥和密钥
私钥放在本地~/.ssh目录
公钥可以对外公开,放在服务器的~/.ssh/authorized_keys
ssh-add命令可以添加自定义名称key
服务端把相关的公钥和私钥存在/etc/ssh/key中
实验:
1.B主机的root用户能够连接主机A的root,不需要密码
2.B主机使用root登陆A主机的普通用户也需要密码
3.B主机的其他用户登陆A主机的任何用户都需要密码
4.A主机只能使用账户和密码的方式登陆B主机
//实验环境
系统版本 | IP地址 | 主机名 | 角色 |
---|---|---|---|
Red Hat7.4_x86-64 | 192.168.100.33 | A-Server-33 | A-ssh |
Red Hat7.4_x86-64 | 192.168.100.60 | B-Server-60 | B-ssh |
//关闭防火墙
//关闭selinux
systemctl stop firewalld.service //关闭防火墙
systemctl disable firewalld.service //并关闭开机自启
getenforce 0 //查看selinux状态
Disabled
//在B服务器上生成密钥 ,-t 指定密钥类型,-C指定用户邮箱
[root@B-Sever-60 ~]# ssh-keygen -t rsa -C 2471269000@qq.com
//默认一句回车即可
//查看
[root@B-Sever-60 ~]# ls .ssh/
id_rsa //私钥
id_rsa.pub //公钥
known_host
//公钥发送A服务器,输入A登陆服务器密钥,会提示建立authorized_keys新文件
[root@B-Sever-60 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.33
//在A主机查看.ssh目录列表多了authorized_keys文件
[root@A-Server-33 ~]# ls .ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
//登陆检测
[root@B-Sever-60 ~]# ssh root@192.168.100.33
Last login: Fri Sep 7 08:38:33 2018 from 192.168.100.1
//只能登陆root用户,因为公钥只发给了root用户没有发给其他用户
//可能遇到的报错
no route to host 防火墙
Connection refused 防火墙
Connection refused 服务没开
ssh
安全事项
- 使用非默认端口 //**
[root@A-Server-33 ~]# vim /etc/ssh/sshd_config
Port 2222 //修改的端口号
#Port 22 //ssh默认端口号
[root@A-Server-33 ~]# ss -lnpt | grep 2222
LISTEN 0 128 *:2222 *:* users:(("sshd",pid=10029,fd=3))
LISTEN 0 128 :::2222 :::* users:(("sshd",pid=10029,fd=4))
- 仅监听特定的IP
[root@A-Server-33 ~]# vim /etc/ssh/sshd_config
#ListenAddress 0.0.0.0 //默认允许所有
ListenAddress 192.168.100.30 //只允许
[root@A-Server-33 ~[root@A-Server-33 ~]# ss -lnpt | grep 2222
LISTEN 0 128 192.168.100.33:2222 *:*
- 禁止密码登陆 //**
[root@A-Server-33 ~]# vim /etc/ssh/sshd_config
#PasswordAuthentication yes //默认是可以使用密码登陆
PasswordAuthentication no //关闭密码登陆
- 允许root以密钥方式登陆
PermitRootLogin without-password //默认是开启的
- 禁止使用空密码
#PermitEmptyPasswords no //默认是开启的
- 关闭DNS解析,优化速度
##UseDNS yes //默认开启
UseDNS no //关闭
GSSAPIAuthentication yes //默认打开的
GSSAPIAuthentication no 关闭
//修改配置文件后需要重启ssh服务,不要关闭服务然后在启动