ssh
Posted baozexu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh相关的知识,希望对你有一定的参考价值。
1.什么是SSH?
ssh是一个应用层安全协议
2.SSH主要的功能是?
实现远程登录, 数据传输过程中进行加密. 钉钉(澡堂模式)
远程登录:
SSH
Telnet
3.SSH与Telnet之间有什么区别?
SSH 加密 22 root直接登录
Telnet 明文 23 不支持root直接登录
4.抓包分析SSH与Telnet的区别?
Wireshark
[root@backup ~]# yum install telnet-server -y
[root@backup ~]# systemctl start telnet.socket
[oldboy@backup ~]$ echo oollddbbooyy |sed -r 's#(.)(.)#\1#g'
oldboy
PS:
服务器都是使用的SSH协议实现的远程登录
对于路由器 交换机 都是走的telnet协议 ( WEB界面调试 )
5.SSH相关客户端指令ssh、scp、sftp?
1.ssh ( Windows Xshell Crt ) ( Mac ssh命令 Crt )
[root@web01 ~]# ssh root@172.16.1.41
root@172.16.1.41‘s password:
2.scp: rsync增量 scp 全量(每次都是覆盖) ssh协议
拷贝目录 需要 -r参数
推送
[root@web01 ~]# scp ./web-file root@172.16.1.41:/tmp
获取
[root@web01 ~]# scp root@172.16.1.41:/tmp/web-file ./test
限速 ( kb 1024 * 8 = 实际的传输速率 )
[root@web01 ~]# scp -l 8192 ./1.txt 172.16.1.41:/tmp
root@172.16.1.41's password:
1.txt 14% 74MB 1.0MB/s 07:09
3.sftp 文件传输协议?
为什么不适用命名的方式? 为什么使用xftp?
1.简单,带图形,支持断点续传,支持暂停
6.SSH远程登录方式、用户密码、秘钥方式?
1.基于用户和密码的方式
1.密码太复杂容易忘 lastpass
2.密码太简单不安全
2.基于密钥的方式实现 (指纹)
1.降低密码泄露风险
2.提升用户的便捷性
3.实现免密码登录方式
1.创建一对密钥 公钥+私钥 ==配套
[root@manager ~]# ssh-keygen -C manager@qq.com
.....一路回车.....
2.将管理机的公钥推送至web服务器上 ( 需要输入对端服务器的密码 )
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7
3.使用 ssh 命令 连接 对应的服务器 ( 检查是否免密码 )
[root@manager ~]# ssh 'root@172.16.1.7'
?
Windows
4.有问题查看
tail -f /var/log/secure
https://www.jianshu.com/p/fb0df700305d
? ![1568212665214](C:\Users\包泽旭\AppData\Roaming\Typora\typora-user-images\1568212665214.png)
![1568212765565](C:\Users\包泽旭\AppData\Roaming\Typora\typora-user-images\1568212765565.png)
![1568212804578](C:\Users\包泽旭\AppData\Roaming\Typora\typora-user-images\1568212804578.png)
systemctl restart sshd
![1568212928524](C:\Users\包泽旭\AppData\Roaming\Typora\typora-user-images\1568212928524.png)
#### 直接点击回车
7.SSH场景实践,借助SSH免秘实现跳板机功能?
? 看图
?
? 8.SSH远程连接功能安全优化? fail2ban又是啥?(研究)
? 1.更改远程连接登陆的端口 port 6666
? 2.禁止ROOT管理员直接登录 PermitRootLogin no
? 直接 xshell -->root --> server (禁止用户名密码 禁止密钥)
? 间接 xshell -->oldxu --> server ---> su - root
? 3.密码认证方式改为密钥认证 PasswordAuthentication no
? 4.重要服务不使用公网IP地址 !!!!!!!!!!!!!!!!!
? 5.使用防火墙限制来源IP地址 软件防火墙 | 硬件防火墙
?
10.0.0.1(其他人) ---> 10.0.0.61 异常
10.0.0.100(公司) ---> 10.0.0.61 正常
6.修改后的配置 [测试完后记得还原]
[root@manager ~]# vim /etc/ssh/sshd_config
Port 6666 # 变更SSH服务远程连接端口
PermitRootLogin no # 禁止root用户直接远程登录
PasswordAuthentication no # 禁止使用密码直接远程登录
UseDNS no # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication no # 禁止GSS认证,减少连接时产生的延迟
域名解析IP
IP解析域名
?
### 9.fail2ban又是啥?(研究)
#### ail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。
?
1.开启Firewalld防火墙
[root@bgx ~]# systemctl start firewalld
[root@bgx ~]# systemctl enable firewalld
[root@bgx ~]# firewall-cmd --state
running
2.修改firewalld规则,启用Firewalld后会禁止一些服务的传输,但默认会放行常用的22端口, 如果想添加更多,以下是放行SSH端口(22)示例,供参考:
放行SSHD服务端口
[root@bgx ~]# firewall-cmd --permanent --add-service=ssh --add-service=http
重载配置
[root@bgx ~]# firewall-cmd --reload
查看已放行端口
[root@bgx ~]# firewall-cmd --list-service
3.安装fail2ban,需要有epel
[root@bgx ~]# yum install fail2ban fail2ban-firewalld mailx -y
4.配置fail2ban规则.local会覆盖.conf文件
[root@bgx fail2ban]# cat /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure
5.启动服务,并检查状态
[root@bgx ~]# systemctl start fail2ban.service
[root@bgx ~]# fail2ban-client status sshd
6.清除被封掉的IP地址
[root@bgx ~]# fail2ban-client set sshd unbanip 10.0.0.1
10.SSH如何结合Google Authenticator 实现双向验证? (适合自己用)
基于密码 + 动态口令 支持
基于密钥 + 动态口令 不支持
https://www.xuliangwei.com/bgx/1345.html
```
总结:
1.ssh几个客户端命令 scp ssh
2.ssh连接方式 用户名和密码 密钥 ( 最多 ) <---ansible
ssh-keygen #命令
ssh-copy-id #脚本
3.ssh连接,访问控制
1.不要有公网IP
2.能够使用防火墙限制来源IP ( 你的很多服务器 都有公网 )
3.修改端口 6666
4.禁止root登录
5.禁止使用密码
web架构:
rsync
nfs
sersync
ssh
以上是关于ssh的主要内容,如果未能解决你的问题,请参考以下文章
PyCharm SSH 隧道通过本地 ssh 配置 (~/.ssh/config)
ssh(不是openssh) 做无密码登陆,怎么每次ssh 登陆还是要输入密码呀?