1、定义
SSH(Secure Shell Protocol,安全的壳程序协议) 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。
2、功能
1)分享主机运算能力
2)服务器类型有限度开放连接
3)工作站类型,只对内网开放
3、常见远程管理工具方式
1)RDP协议—windows远程桌面管理(图形界面)
2)telnet CLI界面下远程管理,几乎所有操作系统都有(内容明文传输)
3)ssh CLI界面下远程管理,都有(内容加密传输)端口号 22
4)RFB—图形化远程管理协议VNC使用的协议
4、两种验证级别
1)基于口令的安全验证(openssh)
只需知道账号和口令,就可以登录到远程主机。所有的传输数据都会被加密,但不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
2)基于密钥的安全验证(openssl)
需要依靠密钥,也就是你必须为自己创建一对密钥,并把公用密钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密钥,服务器就用公用密钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密钥解密再把它发送给服务器。
5、原理
6、常用知识:
修改ssh服务的启动文件 (修改 /etc/ssh/sshd_config)
UseDNS no 加快响应速度因为在内网环境下
PermitRootLogin no 不运行root用户直接登录
Port 11544 更改访问端口号
ListenAddress 192.168.25.130 只监听内网的IP
Allow User anoncvs 当前环境允许登录的用户
PermitRootLogin no 是否允许root用户登录,一般不允许开
ssh远程的加密连接协议,相关软件openssh,openssl
默认端口22
ssh版本协议 ------ssh2、 sslv3
服务器ssh连接,ftp连接,sshd守护进程,开机启动
ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp,
安全验证方式:口令,密钥 学习原理
ssh服务优化:改端口,no root,no DNS,
ssh密钥对,公钥在服务器端,私钥在客户端
7、配置ssh服务
软件包名openssh-server //默认已安装
案例一:修改ssh服务端口号
1)进入主配置文件
[root@localhost ~]# vim /etc/ssh/sshd_config
2)添加防火墙允许策略
3)添加自定义端口到服务
[root@localhost ~]# semanage port -a -t ssh_port_t -p tcp 2222
案例二:拒绝root用户远程登录
#请保持服务器上至少有一个可以远程登陆的普通远程账号
#修改配置文件如下:
#打开该选项并修改参数为no
PermitRootLogin no
#重启服务后生效,使用时使用普通用户进行登陆,需要使用root用户时再切换
案例三:允许特定用户ssh登录,其他用户无法登陆
1)编辑配置文件
[root@localhost ~]# vim /etc/ssh/sshd_config
AllowUsers USERNAME
USERNAME为允许登录的账号,如果是多个用户,用空格隔开
2)然后重启服务
案例四:虚拟机和虚拟机之间使用密钥进行登录
1)配置主配置文件
[root@localhost ~]#ssh-keygen -t rsa
//ssh-keygen – 生成、管理和转换认证密钥 -t指定类型 RSA
#证书的目录
/root/.ssh/id_rsa
#默认创建的公钥文件
/root/.ssh/id_rsa.pub
#复制该公钥文件到对端的该目录下:
[root@localhost~]#scp /root/.ssh/id_rsa.pub
root@192.168.220.134:/root/.ssh/authorized_keys
登录时可以使用如下命令(192.168.220.133为ssh服务端)
[root@localhost~]#ssh -I /root/.ssh/id_rsa root@192.168.220.133
案例五:通过xshell使用密钥验证进行登录
客户端产生密钥的两种方式:
1)
[root@localhost~]ssh-keygen -t rsa -b 4096
[root@localhost~.ssh]cp id_rsa.pub authorized_keys
2)
使用xshell工具的用户密钥管理生成公钥和私钥,然后将公钥上传至服务端的即将要登录的用户的家目录下并命名为
[root@localhost .ssh]# mv id_rsa_2048.pub authorized_keys
服务端:
#取消使用密码进行远程登录
PasswordAuthentication no
然后重启服务