大家好,感谢邀请,今天来为大家分享一下Linux系统中SSH服务的安装与操作指南的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
openssh是SSH服务器软件之一。它可以支持SSH1和SSH2版本协议。您可以使用配置文件中的协议指令来指定仅支持其中之一或两者。默认情况下,系统配置为仅支持SSH2。协议
ssh服务连接排错
检查链路是否畅通#Client
ping+服务器ip地址
客户
traceroute/tracert ip address 检查防火墙是否阻止链路通信#由于防火墙可能无法一次性关闭,需要多次执行shutdown命令
/etc/init.d/iptables stop 检查是否有服务提供网络连接测试服务端口是否有多种方法开放
#远程登录命令
远程登录10.0.0.21 22
#ss命令
ss -lntup|grep 22
#netstat命令
netstat -lntup|grep 22
#nmap命令
nmap -p 22 10.0.0.21
#nc命令
nc 10.0.0.21 22 服务无法启动。查看日志,查看服务端口是否有冲突。在启动服务之前,该服务的端口被其他服务占用。您可以更改服务启动端口。线上环境遇到后,不要随便杀掉这个端口
远程登录服务对比
配置Telnet远程连接服务。安装telnet服务软件yum -y install telnet telnet-server。在xinnetd服务目录下配置telnet文件,让telnet服务能够被xinetd服务管理。指示
(1) Telnet没有自己的服务启动脚本。例如,不能使用:/etc/init.d。
(2)因此,需要使用xinetd服务(超级守护进程),让telnet服务受xinetd服务管理
#如果没有安装xinetd服务,用yum安装即可
yum -y 安装xinetd
#vim编辑xinetd.d目录下服务对应的配置文件。如果这里的服务是telnet,则编辑telnet文件。
vim /etc/xinetd.d/telnet
服务远程登录
{
标志=重用
套接字类型=流
等待=不
用户=root
服务器=/usr/sbin/in.telnetd
log_on_failure +=用户ID
disable=no #这里把yes改成no,yes表示不允许,no表示允许管理
}启动xinetd服务#启动服务
#centos7.x 使用systemctl
systemctl 启动xinetd.service
#centos6.x
/etc/init.d/xinetdw 重新启动
#检查是否启动
ps -ef|grep xinetd
根33095 1 0 16:27 ? 00:00:00 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid
#检查telnet是否由xinetd服务启动
ss -lntup|grep 23
tcp LISTEN 0 64 :23 :* users:(("xinetd",pid=33362,fd=5)) SSH 远程连接服务与telnet 服务的区别在于SSH 服务是加密服务协议,而telnet 服务是非加密服务协议加密服务协议。 SSH服务默认支持root用户。登录,telnet服务默认不支持root用户登录。由于不支持root用户登录,因此需要创建普通用户并设置密码才能登录。
#登录测试
[D:~]$ 远程登录10.0.0.11
正在连接到10.0.0.11:23.
连接已建立。
要转义到本地shell,请按“Ctrl+Alt+]”。
x86_64 上的内核3.10.0-862.el7.x86_64
ansible-1 login: 帅
#Password: #你输入的密码看不到,输入即可
验证SSH和telnet服务安全性
验证telnet是否明文传输数据
打开抓包工具,这里使用的工具是Wireshark
过滤telnet数据包
Telnet 连接服务器
在命令行输入
telnet 10.0.0.11在Wireshark中发现的数据包显示与连接登录时相同。
然后开始输入您的用户名
为了方便查看,我们发现这个数据包开始显示登录用户名。
右键单击并选择Trace Flow,然后选择右侧的TCP Flow
将显示数据包的整个过程。圆圈内的部分是用户名。每个单词之所以重复出现,是因为数据被请求并被确认,所以会重复出现。去重后,用户名为:shuai,密码为:123456。
阐明
由此可以验证telnet传输数据是明文传输的,所以不是很安全!
验证SSH服务传输数据是否加密
用同样的方法,选择ssh数据包,然后在连接软件上通过ssh连接
收到数据包后,使用选择跟踪流,然后选择TCP流
阐明
在跟踪流中,我们可以看到所有信息都被加密并显示。可以看成是一堆乱码。根本没有任何模式。它可以破译您的用户和密码信息,因此ssh 比telnet 服务安全得多!
连接登录过程中会发生什么?
当显示yes/no时,如果输入yes,则接收服务器发送的公钥信息,并将该信息放置在/root/.ssh/known_hosts文件中。
SSH知识要点总结
SSH 是一种安全加密协议,用于远程连接到Linux 服务器。 SSH默认端口为22端口,安全协议版本为SSHv2。除了SSHv2版本外,还有SSHv1版本(存在漏洞且不安全)。主SSH服务器包含SSH远程连接和SFTP服务两种服务功能。 Linux SSH客户端包括SSH远程连接命令、远程复制scp命令等!
SSH服务详解说明
SSH服务由服务器软件OpenSSH(Openssl)和客户端组成。常见的SSH(linux)、secureCRT、putty、Xshell。 SSH服务默认使用22端口提供服务。它有两个不兼容的SSH协议版本,即1.x和2.x
默认的SSH软件不能直接安装yum install -y ssh
没有可用的ssh 软件包。
Error: 无事可做
获取SSH服务的软件包
rpm -qf `which ssh`
openssh-clients-7.4p1-16.el7.x86_64
SSH服务软件命令知识
openssh-clients 客户端软件信息
rpm -ql openssh 客户端
/etc/ssh/ssh_config #ssh客户端配置文件
/usr/bin/scp #远程复制命令
/usr/bin/sftp #远程文件传输服务
/usr/bin/slogin #远程登录命令
/usr/bin/ssh #SSH远程登录管理主机命令
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id #SSH服务分发公钥命令
/usr/bin/ssh-keyscan/usr/bin/slogin (如何使用远程登录命令)
openssh-server 服务器软件信息
root@ansible-2:~#:rpm -ql openssh-server
/etc/rc.d/init.d/sshd #ssh服务启动脚本
/etc/ssh/sshd_config #ssh服务配置文件信息
/usr/sbin/sshd #ssh服务守护进程命令
~/.ssh/known_hosts #记录公钥文件/usr/sbin/sshd:守护进程命令
可以直接使用该命令启动ssh服务。笔记
使用此命令需要绝对路径
/usr/sbin/sshd 查看sshd进程
阐明
(1)箭头所指的是ssh的真实进程
(2) 箭头下方的是已连接的用户。杀死该用户将导致链接断开。
(3)杀死SSHD主进程后,连接的用户不会断开。用户将被保留在其中,直到用户主动断开连接。但SSHD主进程断开连接后,其他用户无法再连接到系统。
known_hosts 文件引起的报错问题及解决
使用~/.ssh/known_hosts 文件的说明。 SSH 会将您访问过的每台计算机的公钥记录在~/.ssh/known_hosts 中。 OpenSSH 将在您下次访问同一台计算机时检查公钥。如果公钥不同,OpenSSH 将发出警告,以保护您免受DNS 劫持等攻击。
如果连接时出现以下情况,如何解决?
解决方案:
手动删除和修改known_hsots的内容;修改配置文件“~/.ssh/config”,添加这两行,然后重启服务器。
StrictHostKeyChecking 否
UserKnownHostsFile /dev/null 优点和缺点:
每次需要手动删除文件内容,部分自动化脚本无法运行(SSH登录失败),但安全性较高; SSH登录时known_hsots访问会被忽略,但安全性较低;
获取OpenSSL包含的软件包信息
rpm -qa|grep openssh
openssh-clients-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64 说明
SSH 服务器是一个守护进程,在后台运行并响应来自客户端的连接请求。 SSH服务器进程称为sshd,负责实时监控远程SSH客户端的远程连接请求并进行处理,一般包括公钥认证、密钥交换、对称密钥和非安全连接等。SSH服务一般需要在启动时自动启动
SSH加密技术说明
ssh服务实现连接安全连接建立,使用"key"和"lock" : key=私钥lock=公钥私钥不能在网络中传输------私钥可以解密公钥(钥匙可以开锁)
公钥可以在网络中传输------公钥无法解密私钥
SSH服务认证类型
(1)基于密码/口令安全验证
基于密码的安全验证方法是知道服务器的SSH 连接帐号和密码(还必须知道知道对应服务器的IP地址和密码)打开SSH端口(默认为22端口),可以通过SSH客户端登录远程主机。此时,所有在线过程中传输的数据都是加密的!
- 演示XSHELL和SSH客户端连接、密码验证测试
#方法1
ssh -p22 root@10.0.0.11
## 标题
#方法2
ssh 10.0.0.11
(2)基于密钥(钥匙锁头)的安全验证
基于密钥的安全验证方式意味着需要依赖密钥,即必须提前建立密钥对,然后将公钥(锁定:公钥)放在目标上需要访问的服务器上,此外还需要将私钥(密钥:私钥)放在SSH客户端或者对应的客户端服务器上。
这时,如果你想用公钥连接到这台SSH服务器,客户端SSH软件或者客户端服务器就会向SSH服务器发送请求。请使用在线用户密钥进行安全验证。 SSH服务器收到请求后,首先会在连接SSH服务器的用户的主目录中查找预先放入的相应用户的公钥,然后与客户端发送的公钥进行比较连接的SSH 客户端。如果这两个密钥是SSH 服务器使用公钥来加密“挑战”并将其发送到SSH 客户端!
SSH客户端收到“挑战”后,可以用自己的私钥解密并将其发送到SSH服务器。使用这种方法需要知道在线用户的密钥文件,这与第一种基于密码验证的方法类似。与第二种方法相比,不需要在网络上传输密码,因此安全性更高。这就是为什么我们也注意保护我们的密钥文件,尤其是私钥文件。一旦被黑客获取,风险系数就会增加。很多。
SSH配置文件(重要)
SSH配置文件默认路径信息
SSHD服务配置文件ls -l /etc/ssh/sshd_config
-rw--------。 1 root root 3907 Apr 11 2018 /etc/ssh/sshd_config 在编辑sshd_config 配置文件之前备份它。养成对自己、对公司负责的好习惯。备份重要配置文件,防止误操作
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
SSH配置文件修改-默认登录参数
修改SSH服务的运行参数是通过修改配置文件/etc/ssh/sshd_config来实现的。
一般来说,使用默认配置SSH服务就可以很好地工作。如果安全要求不高,只提供SSH服务,则无需修改任何参数配置。
下面提供普通企业中的SSH服务配置参数vim /etc/ssh/sshd_config。
Port 52117 #SSH连接的默认端口是22,为了提高安全性,请修改为0-1024以外的端口号(0-1024已经被很多知名服务占用,使用可能会冲突)
PermitRootLogin no #禁止root用户远程登录。只能使用普通用户登录并切换到root。
PermitEmptyPasswords no #禁止空密码登录
UseDNS no #不使用DNS域名解析。开启会导致连接变慢(连接时会反向解析,根据IP地址解析主机名,没有意义!)
GSSAPIAuthentication no #关闭GSSAPI身份验证。每个连接都会经过身份验证。内网使用无需开启子认证。企业案例: Linux下SSH远程连接服务慢解决方案企业优化SSH服务#备份配置文件
cp /etc/ssh/sshd_config{,bak}
#使用sed在最后添加一些内容,然后备份原来的信息
sed -i.ori.20190101 "$ aPort 52113nPermitRootLogin nonPermitEmptyPasswords nonUseDNS no nGSSAPIAuthentication no" /etc/ssh/sshd_config 打开编辑sshd_config 配置文件vim /etc/ssh/sshd_config 描述:
(1)为什么这里的注释有或没有空格?
‘#’注释后面的空格表示下面是描述信息。
‘#’注释后面没有空格,表示后面是相关的参数信息,也是默认的参数配置信息。
(2)更改配置文件时,多开几个连接窗口。方法改错后,关闭窗口,无法进入连接。配置文件:ListenAddress: 监听地址说明#vim 编辑sshd_config 配置文件
vim /etc/ssh/sshd_config
#找到下面两行参数
#监听地址0.0.0.0
#监听地址:
#修改参数
ListenAddress 10.0.0.0 #监听10.0.0.0网段
#重启sshd服务
systemctl 重新启动sshd
#检查监听地址是否发生变化
ss -lntup |grep sshd
tcp LISTEN 0 128 10.0.0.0:22 *:* users:(("ssh",pid=70311,fd=3))SSH服务监听参数说明
SSH服务入侵防范
企业服务器入侵案例
如何防止SSH登录入侵总结:密钥登录、无密码登录、用防火墙关闭SSH、指定源IP限制(局域网、信任公网)
开启SSH,仅监听本地内网IP(例如:ListenAddress 172.16.1.31)。尽量不要最小化服务器的外部IP地址(软件安装-授权-安装有用的,不要安装无用的)。为重要的系统文件或命令制作指纹(编写一个脚本,实时监控文件的指纹是否发生变化,如果发生变化立即发送邮件提醒你!)
SSH服务相关命令用法
基本ssh语法使用ssh远程登录命令ssh -p22 root@10.0.0.11
#-p(小写)连接端口号,默认端口号是22
#""@""前面是用户名,或者不需要指定用户名。
后面是要连接的IP 地址
#端口改变时如何连接
ssh -p (更改端口号) (用户)@(IP地址) 错误描述
(1)如果修改了端口,直接连接后会有提示。
ssh: 连接到主机10.0.0.11 端口22 : 连接被拒绝
(2)错误字符串对应的可能问题
没有到主机的路由#可能是防火墙造成的
连接被拒绝#可能是防火墙导致的
连接被拒绝#也可能是连接的peer服务没有打开或者端口被改变导致的。
SSH远程连接方法-windows客户端连接
windows下远程连接的软件一般有SecureCRT、putty、xshell等工具
连接远程桌面的工具有VNC、MobaXterm等工具
这里我使用的是XSHell连接工具
scp 远程复制数据命令
推:PUSHscp -P22 -rp /tmp/shuai.txt geek@10.0.0.21:/tmp
#-P(大写)端口号
#-r 递归表示复制目录
#-p(小写)表示保留文件或目录复制前后的属性
#-l limit 限制速度。当传输大量文件时使用此参数可以减少带宽占用,防止因带宽占用过多而增加网络延迟。
# /tmp/shuai.txt为本地目录文件,"用户名"@"目标IP地址":(远程主机目标目录)拉取:PULL
scp -P22 -rp root@10.0.0.11:/tmp/shuai.txt /opt
#也可以将远程目录拉取到本地
SSH服务远程命令-sftp命令
windows客户端与linux服务器之间的数据传输工具rz/sz(lrzsz)
winscp WinSCP-v4.0.5 基于SSH、sftp
XFTP(XSHELL Windows 工具)
基于SSH、linux命令的SFTP加密传输
FTP工具vsftpproftpSFTPsftp数据传输命令连接目标服务器sftp -oPort=22 root@10.0.0.21
root@10.0.0.21的password: #输入密码
连接到10.0.0.21。
sftp# 进入运行阶段。您可以在此输入操作说明。连接成功后如何进行命令操作。 sftphelp 显示帮助信息。
cd 更改远程目录路径
ls 显示远程主机目录文件列表
lls 显示本地
pwd 查看远程工作目录信息
lpwd 查看本地
rm 删除文件
put /tmp/ssscp.txt /tmp/上传文件到远程服务器
get /tmp/ssscp.txt /opt/下载远程文件到本地
#无需连接目录即可上传/下载。注意切换目录位置,或者自己连接参数描述文件并在该位置进行解释。
如果你想查看本地的东西,只需在命令前面加一个l即可!
【Linux系统中SSH服务的安装与操作指南】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
正好最近想学习 ssh ,这篇文章挺全面的。
有11位网友表示赞同!
讲得真简单易懂,连新手也能看懂呀!
有13位网友表示赞同!
Linux 下做开发确实要熟练使用SSH。
有5位网友表示赞同!
之前一直用图形界面的工具远程连接,要用命令行感觉有点陌生...
有5位网友表示赞同!
希望以后能学到更多的 Linux 命令。
有16位网友表示赞同!
安装 SSH 是一个必备技能,感谢分享!
有11位网友表示赞同!
学习一下SSH服务的使用确实可以提高效率。
有6位网友表示赞同!
现在很多服务器配置都依赖ssh了,一定要熟悉使用。
有19位网友表示赞同!
这篇教程很详细,比我找的那些文章要好得多。
有9位网友表示赞同!
终于不用再频繁往返办公室和家里拿文件资料啦!
有5位网友表示赞同!
远程连接 really 提高工作效率啊!
有14位网友表示赞同!
学习 Linux 的过程中遇到很多坑,这篇文章可以帮我去解决一些问题。
有19位网友表示赞同!
以后用 SSH 连服务器要考虑安全问题了,比如密码保护等等。
有9位网友表示赞同!
感觉这个操作还是有点复杂的...
有19位网友表示赞同!
看的时候我一直在想如果哪一步出错该怎么办...
有5位网友表示赞同!
真羡慕那些 proficient 使用 Linux 的高手!
有9位网友表示赞同!
期待以后学习更多关于Linux的知识。
有7位网友表示赞同!
这篇文章可以帮助我更好地理解SSH服务的工作原理。
有10位网友表示赞同!