Linux系统SSH服务详解

简介:

SSH 为 secure shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

基本功能:

1.首先我们开启两台Linux系统,一台作为服务端,一台作为客户端。我们先用vim编辑器对ssh服务端配置文件“/etc/ssh/sshd_config”进行编辑。


Port 22                                          监听端口,默认监听22端口
#AddressFamily any                     IPV4和IPV6协议家族用哪个,any表示二者均有
#ListenAddress 0.0.0.0                 指明监控的地址,0.0.0.0表示本机的所有地址
#ListenAddress ::                           指明监听的IPV6的所有地址格式

#LoginGraceTime 2m                 会话时间,默认2分钟则自动断开连接
#PermitRootLogin yes                是否允许管理员直接登录,‘yes‘表示允许
#StrictModes yes                         是否让sshd去检查用户主目录或相关文件的权限数据
MaxAuthTries 6                           最大认证尝试次数,最多可以尝试6次输入密码。
#MaxSessions 10                        允许的最大会话数
(将“#”删除即可开启相应功能)

2.配置完毕记得重启服务才会生效,我们用客户端尝试连接一下服务端。


我们直接输入用来的登录的用户root(注意是服务端用户)和服务端IP地址即可,然后输入用户密码即可登录。我之前登陆过,如果没有登陆过,系统会问你是否想连接,你只需输入“yes”即可。

如果客户端的用户名和服务端的用户名相同,登录时可以省略用户名。

SSH服务的默认端口是22,如果你不设置端口的话,登录请求会自动送到远程主机的22端口。如果我们在配置文件里修改了端口号,我们可以使用 -p 选项来指定端口号。例如端口改为了123:

3.我们知道root用户是系统的管理员,如果别人能够随意登录肯定是不安全的。所以我们可以通过修改配置文件,不让别人通过root用户登录。修改完记得重启服务。



我们再次用root用户登录,输入密码后显示权限拒绝,而换成zhangsan用户又可以登录了。

4.虽然我们限制了使用root用户登录,但是当我们用zhangsan用户登录了,用“su”命令任然可以切换到root用户。

所以我们可以开启“su”命令的PAM安全认证功能,我们只要将允许用“su”命令的用户添加到“wheel”组即可。

可以看到用户“jiang”在“wheel”组中,用户“zhangsan”不在。我们再用“zhangsan”用户切换root用户已经显示权限拒绝,而在“wheel”组用户“jiang”任然可以切换root用户。

5.前面我将最大认证尝试次数6次数开启了,我们可以测试一下是否成功。
可以看到当我们尝试了6次,就自动被断开连接了。但是我们得用“-o NumberOfPasswordPrompts=8”选项才能测试成功,如果直接输入,还是默认3次就会断开连接。

6.我们还可以通过在服务端配置文件里添加黑白名单来限制登录的用户和IP地址。

黑白名单不能同时存在,一般企业中多用白名单,下面以白名单为例演示。
首先我们在配置文件中添加白名单,限制zhangsan用户只能在ip为192.168.52.132的主机上进行登录,lisi用户可以在任意主机上进行登录。配置完成要重启服务。


我们在ip为192.168.52.132的主机上登录时,可以看到由于设置了白名单,用户“jiang”不在名单里所有已经不能登录了,而zhangsan与lisi用户任然可以登录。


我们在ip为192.168.52.128的主机上登录时,只有lisi用户可以登录,zhangsan用户不能登录,因为我们限制了zhangsan用户只能在ip为192.168.52.132的主机上进行登录。

scp命令与sftp命令

1.我们将之前设置的白名单删除,允许root用户登录改为“yes”,并重启服务。

2.首先在client主机的“/opt/”目录,新建一个文件“ssh_client.txt”和一个目录“ssh”,然后用scp命令将它们都复制到server主机的“/opt/”目录下。


3.再在client主机的“/opt/”目录下,创建一个文件“test01”,然后在“server”主机用scp命令将文件复制过来。


4.我们将之前在两台主机“/opt/”目录下新建的目录和文件删除,分别在server与client的“/opt/”目录下创建两个文件demo01、demo02。

5.我们在client主机用sftp命令也可以登录server主机进行文件的上传和下载。上传用“put”命令,下载用“get”命令,同时我们还可以用cd命令进行目录的切换。

6.可以看到我们可以用cd命令随意切换目录,这样很不安全,所以我们可以通过对ssh服务端配置文件进行修改,将sftp命令连接后限制在我们指定的目录里。

首先用vim编辑器对文件“/etc/ssh/sshd_config”进行编辑,将“Subsystem sftp /usr/libexec/openssh/sftp-server”注释掉。然后添加下面的命令:

Subsystem  sftp  internal-sftp
Match User zhangsan
ChrootDirectory /home/zhangsan
X11Forwarding no
ForceCommand internal-sftp
AllowTcpForwarding no
(配置完别忘了重启服务)

然后我们进入“/home/”目录,将我们指定的目录“zhangsan”的权限设为“755”,属主、属组均改为root。

我们再“/home/zhangsan/”目录下,新建5个空文件。

我们再次用client主机,通过sftp连接server主机,可以看到我们直接就登录到“zhangsan/目”录中了。当我们想切换到别的目录时,都不能成功。

密钥对登录

1.将之前的限制sftp登录切换目录的配置修改回来,开启密钥对登录功能(删除#即可),并重启服务。



2.首先用“ssh-keygen -t ecdsa”命令生成密钥对,将密钥文件存在“/home/zhangsan/.ssh/”目录中。

3.用命令“ssh-copy-id -i id_ecdsa.pub [email protected]”将目录“/home/zhangsan/.ssh/”下的公钥文件“id_ecdsa.pub”导入到server主机。

4.当我们再次用ssh命令登录时,这是只要输入之前的密钥即可。

5.但是我们每次登录都得输入密钥会很麻烦,此时我们只要用bash代理,添加密钥即可,我们下次登录就不用输入密钥了。

TCP Wrappers策略

控制策略的配置文件:

  • /etc/hosts.allow(白名单文件)
  • /etc/hosts.deny(黑名单文件)

策略的应用顺序:

  • 先检查hosts.allow文件,找到匹配则直接允许访问,不再检查hosts.deny文件;
  • 若hosts.allow文件中没有,再检测hosts.deny文件,找到则拒绝访问;
  • 若两个文件中均无匹配策略,则默认允许访问。

1.先用vim编辑器对文件“/etc/hosts.allow”进行编辑,添加一个白名单ip192.168.52.132。


2.再用vim编辑器对文件“/etc/hosts.deny”进行编辑,将所有ip设为黑名单。


3.下面我们用ip为192.168.52.132的主机client和ip为192.168.52.128的主机client02分别进行登录,只有白名单里的client主机可以登录。

4.将白名单中的client主机ip删除,加入到黑名单中,再用client主机去登录,结果不能登录。


原文地址:https://blog.51cto.com/14449541/2436933

时间: 2024-10-04 10:04:47

Linux系统SSH服务详解的相关文章

FreeBSD系统SSH配置详解并能使用su

修改freebsd可以用sshd权限用户登录ssh 但不能用root用户登录的方法 在/etc/ssh/sshd_config最后中加入 PermitRootLogin yes #允许root登录 PermitEmptyPasswords no #不允许空密码登录 PasswordAuthentication yes # 设置是否使用口令验证. 就可以了 FreeBSD SSH配置详解 首先vi编辑/etc/inetd.conf,去掉ssh前的#,保存退出 (开启****ssh服务) 编辑/et

Linux系统中目录详解

1.Linux文件系统的层次结构 在Linux或Unix操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构. 文件系统的最顶层是由根目录开始的,系统使用"/"来表示根目录.在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件.如此反复就可以构成一个庞大的文件系统. 在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点"."来表示:另一个是当前目录的上一级目录,也叫父目录,可以使用两个

linux系统find命令详解

find命令 –用途:用于查找文件或目录 –格式:find  [查找范围]  [查找条件] 常用查找条件 –-name:按文件名称查找 –-size:按文件大小查找 –-user:按文件属主查找 –-type:按文件类型查找 –-print:以\n为换行符打印出文件(路径) 高级查找条件 –-perm:按权限查找 –-ctime(-cmin):按文件创建时间(天为单位)查找 –-atime(-amin):按访问时间查找 –-mtime(-mmin):修改时间查找 –-newer:查找比指定文件更

<Linux系统hostname命令详解>

hostname命令的用法的小知识我们都知道hostname命令是查看主机名和修改主机名的. [[email protected] ~]# hostname  //查看本机的主机名apache.example.com[[email protected] ~]# hostname redhat //临时修改主机名[[email protected] ~]# hostname redhat[[email protected] ~]# uname -n //这样也可以显示主机名redhat不过这样的修

linux系统下信号详解2

信号是UNIX 系统所使用的进程通信方法中,最古老的一种.信号不但能从内核发往一个进程,也能从一个进程发往另一个进程.例如,用户在后台启动了一个要运行较长时间的程序,如果想中断其执行,可以用kill 命令把SIGTERM信号发送给这个进程,SIGTERM 将终止此进程的执行.信号还提供了向UNIX 系统进程传送软中断的简单方法.信号可以中断一个进程,而不管它正在作什么工作.由于信号的特点,所以不用它来作进程间的直接数据传送,而把它用作对非正常情况的处理.由于信号本身不能直接携带信息,这就限制了它

linux系统ftp服务器详解

匿名FTP服务 1.检查并安装vsFTPD软件包在终端窗口输入命令:"rpm –qa|grep vsftpd 命令检查系统是否安装了VsFTPD软件包,如下图所示:如上图所示 vsftpd 软件包并没有安装,可以使用命令 yum install vsftpd –y 进行安装 查看是否已经安装成功使用命令 rpm –qa vsftpd 如上图所示已经成功下载安装了软件包vsftpd VsFTPD在安装时会自动创建FTP系统用户组ftp,和属于该组的FTP系统用户ftp, 该用户的主目录为/var/

ssh服务详解

什么是openssh openssl是使用ssh协议远程登录系统的连接工具.它能加密流量.防窃听和其他攻击.此外还能够提供隧道功能.多种认证方法和复杂的配置选项: openssh是一组工具的集合,其套件包括三部分: 远程操作类    ssh.scp.sftp 密钥管理类    ssh-add.ssh-keysign.ssh-keyscan和ssh-keygen 服务提供者类    sshd.sftp-server.ssh-agent openssh官方网站: https://www.openss

Linux系统的文件系统详解

Linux系统文件系统: 1.文件系统介绍 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储结构.软链接硬链接.和常见目录的介绍.相信有了这些知识对于深入的学习linux会有一定的帮助. Linux文件管理从用户的层面介绍了Linux管理文件的方式.Linux有一个树状结构来组织文件.树的顶端为根目录(/),节点为目录,而末端的叶子为包含数据的文件.当我们给

Linux系统备份策略详解

由于linux系统的特殊性,获取root用户权限后,很容易把系统搞崩溃,所以系统备份是一件不容忽视的大事.得益于linux系统自身的优越性,所以系统的备份和还原操作还是相对简单的. Linux系统所有的数据都以文件的形式存在,所以备份就是直接拷贝文件;硬盘分区也被当成文件,所以可以直接克隆硬盘数据. Linux系统自带很多实用工具,比如tar.dd.rsync等,备份还原系统不需要购买或下载第三方软件. Linux系统在运行时其硬盘上的文件可以直接被覆盖,所以还原系统的时候不需要另外的引导盘.