ssh管理
openssh包
[root@itzfl ~]# ls /mnt/cdrom/Packages/ |grep openssh
openssh-7.4p1-11.el7.x86_64.rpm 包含openssh服务器及客户端的核心文件
openssh-askpass-7.4p1-11.el7.x86_64.rpm 支持对话框窗口的提示,是一个基于x系统的密码诊断
openssh-clients-7.4p1-11.el7.x86_64.rpm openssh 客户端软件包
openssh-server-7.4p1-11.el7.x86_64.rpm openssh 服务器软件包
1.安装ssh服务
yum install -y openssh*
2.查询安装生产的文件
[root@itzfl ~]# rpm -ql openssh
/etc/ssh
/etc/ssh/moduli
/usr/bin/ssh-keygen
/usr/libexec/openssh
/usr/libexec/openssh/ctr-cavstest
/usr/libexec/openssh/ssh-keysign
/usr/share/doc/openssh-7.4p1
/usr/share/doc/openssh-7.4p1/CREDITS
/usr/share/doc/openssh-7.4p1/ChangeLog
/usr/share/doc/openssh-7.4p1/INSTALL
/usr/share/doc/openssh-7.4p1/OVERVIEW
/usr/share/doc/openssh-7.4p1/PROTOCOL
/usr/share/doc/openssh-7.4p1/PROTOCOL.agent
/usr/share/doc/openssh-7.4p1/PROTOCOL.certkeys
/usr/share/doc/openssh-7.4p1/PROTOCOL.chacha20poly1305
/usr/share/doc/openssh-7.4p1/PROTOCOL.key
/usr/share/doc/openssh-7.4p1/PROTOCOL.krl
/usr/share/doc/openssh-7.4p1/PROTOCOL.mux
/usr/share/doc/openssh-7.4p1/README
/usr/share/doc/openssh-7.4p1/README.dns
/usr/share/doc/openssh-7.4p1/README.platform
/usr/share/doc/openssh-7.4p1/README.privsep
/usr/share/doc/openssh-7.4p1/README.tun
/usr/share/doc/openssh-7.4p1/TODO
/usr/share/licenses/openssh-7.4p1
/usr/share/licenses/openssh-7.4p1/LICENCE
/usr/share/man/man1/ssh-keygen.1.gz
/usr/share/man/man8/ssh-keysign.8.gz
3.配置文件
4.远程连接
[root@itzfl ~]# useradd zfl && echo 123456 |passwd --stdin zfl
更改用户 zfl 的密码 。
passwd:所有的身份验证令牌已经成功更新。
ssh 用户名@ip地址 -p port
ssh -l 用户名 主机名/IP地址 -P port 默认端口22
[root@itzfl ~]# ssh zfl@192.168.140.129
The authenticity of host '192.168.140.129 (192.168.140.129)' can't be established.
ECDSA key fingerprint is SHA256:rxilWKOjY6bLnvTfEgQSnFkP1pBQUm5RSl4NFMzsWgM.
ECDSA key fingerprint is MD5:9a:2f:8e:d5:ba:ee:6e:64:50:fe:c3:fb:ae:40:89:7c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.140.129' (ECDSA) to the list of known hosts.
zfl@192.168.140.129's password:
[zfl@itzfl ~]$
[root@itzfl ~]# ssh -l zfl 192.168.140.129
zfl@192.168.140.129's password:
Last login: Fri Jul 29 16:49:00 2022 from itzfl
[zfl@itzfl ~]$
修改端口号
[root@itzfl-5 ~]# vim /etc/ssh/sshd_config
[root@itzfl-5 ~]# systemctl restart sshd
[root@itzfl-5 ~]# netstat -tlunp |grep sshd
tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 26688/sshd
tcp6 0 0 :::6666 :::* LISTEN 26688/sshd
[root@itzfl-5 ~]# ssh zfl@192.168.140.5
ssh: connect to host 192.168.140.5 port 22: Connection refused
[root@itzfl-5 ~]# ssh zfl@192.168.140.5 -p 6666
zfl@192.168.140.5's password:
Last login: Sat Jul 30 15:56:58 2022 from itzfl-5
nmap 查询当前端口号
[root@itzfl-5 ~]# nmap 127.0.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-30 16:24 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
6000/tcp open X11
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
[root@itzfl-5 ~]# nmap 192.168.140.5 修改后的 后面的服务器名字改变
Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-30 16:21 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for 192.168.140.5
Host is up (0.0000060s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
111/tcp open rpcbind
6000/tcp open X11
6666/tcp open irc
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
**配置文件里面的设置/etc/ssh/sshd_config **
[root@itzfl ~]# vim /etc/ssh/sshd_config
20 #ListenAddress 0.0.0.0
设置SSHD服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址安全建议:如果主机不需要从公网ssh访问,可以把监听地址改为内网地址
这个值可以写成本地IP地址,也可以写成所有地址
23 HostKey /etc/ssh/ssh_host_rsa_key
设置的计算机的密钥
33 SyslogFacility AUTHPRIV
当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV。
注:sshd服务日志存放在: /var/log/secure 。
互动: 为什么sshd配置文件中没有指定日志,但日志却存放在了/var/log/secure ?
服务器默认会将系统中的一些基础服务的相关日志文件存放在单独的配置文件 /etc/rsyslog.conf中,在该配置文件中进行定义
38 #LoginGraceTime 2m 限制用户必须在指定的2分钟内登录成功。比如当使用者连上 SSH server
之后,会出现输入密码的画面,在该画面中,超过了2分钟,此次连接就自动关闭了。若无单位则默认时
间为秒。
# PermitRootLogin yes #是否允许 root 登入!默认是允许的,但是建议设定成 no !真实的生产环境
服务器,是不允许root账号直接登陆的!!!
PasswordAuthentication yes # 密码验证当然是需要的!所以这里写 yes,也可以设置为no,
#在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆
# PermitEmptyPasswords no
# 若上面那一项如果设定为 yes 的话,这一项就最好设定为 no 。
# 这个项目在是否允许以空的密码登入!当然不许!
# PrintMotd yes ## 登入后是否显示出一些信息呢?例如上次登入的时间、地点等等,预设是 yes 。
亦即是打印出 /etc/motd这个文档的内容。例:给sshd服务添加一些警告信息
[root@itzfl ~]# vim /etc/motd
[root@itzfl ~]# cat !$
cat /etc/motd
欢迎来的王者荣耀
[root@itzfl ~]#
[root@itzfl ~]# ssh zfl@192.168.140.129
zfl@192.168.140.129's password:
Last login: Fri Jul 29 16:49:47 2022 from itzfl
欢迎来的王者荣耀
[zfl@itzfl ~]$
自动巡检脚本雏形
106 #PrintMotd yes
# 显示上次登入的信息!预设也是 yes
[root@itzfl ~]# ssh zfl@192.168.140.129
zfl@192.168.140.129's password:
Last login: Fri Jul 29 16:49:47 2022 from itzfl 就是这个信息
116 #UseDNS yes一般来说,为了要判断客户端来源是正常合法的,因此会使用 DNS
去反查客户端的主机名
实战-解决 SSH内网连接慢的方法
在内网中,没有DNS服务器解析域名,直接通过IP连接sshd服务时,总是需要等待一段
时间才可以连接上,怎么才能快速连接sshd服务呢?
答:这是因为ssh在连接需要进行DNS反解析,另外还需要进行GSSAPI认证,
关了这两项就可以了
80 GSSAPIAuthentication yes
no
81 GSSAPICleanupCredentials yes
no
#UseDNS yes
no
systemctl reload sshd 平滑过渡
SSHD服务暴力破解
(1) 密码足够的复杂,密码的长度要大于8位最好大于20位。密码的复杂度是密码要尽可能有数字、大
小写字母和特殊符号混合组成;
(2) 修改默认端口号;
(3) 不允许root账号直接登陆,添加普通账号,授予root的权限;
系统判断一个用户是不是超级管理员,看的是用户的ID是否为0。
(4) 不允许密码登陆,只能通过密钥认证实现SSHD认证
例:使用密钥登录sshd服务