程序地带

SSH远程访问以及控制



SSH远程访问以及控制
一、SSH远程管理基本简介二、OpenSSH服务端相关配置三、SSH客户端程序的登录以及使用-登录验证方式-SSH客户端程序的使用(1)ssh远程登录:(2)scp远程复制(3)sftp文件传输 (安全的ftp)
四、构建密钥对验证的SSH体系五、TCP Wrappers访问控制


一、SSH远程管理基本简介
SSH协议: SSH协议是一种安全通道协议,主要是用来实现字符界面的远程登录、远程复制等功能 相比于Telnet、RSH、RCP等安全性更高 默认端口: TCP 22OpenSSH服务端: OpenSSH是由openssh和openssh-server等软件包提供的 Linux系统默认已经将sshd添加为标准的系统服务 服务名称: sshd 服务端主程序: /usr/sbin/sshd 服务端配置文件: /etc/ssh/sshd_config
二、OpenSSH服务端相关配置

因为主配置文件里大多都是以 # 开头的注释行,所以一般可以直接在主配置文件末尾添加选项,当然添加之前还是要确认所加的选项有没有


******相关服务监听选项
[root@ssh1 ~]# vim /etc/ssh/sshd_config
。。。。。。
Port 22 (监听端口,默认22)
ListenAddress 监听地址
Protocol ssh协议版本
USEDNS no (禁用DNS反向解析)
******相关的用户登录控制选项
[root@ssh1 ~]# vim /etc/ssh/sshd_config
。。。。。。
LoginGraceTime 2m (登录验证时间: 默认2 分钟)
PermitRootLogin yes (默认是“yes”,表示允许root 用户登录)
PermitEmptyPasswords no (默认禁止空密码账户登录)
MaxAuthTries 6 (最大的重试次数)
DenyUsers 用户 (拒绝这个用户在任何机器上使用ssh 远程登录;如果拒绝多个用户中间用空格隔开)
DenyUsers 用户@IP地址 (拒绝这个用户在对应的IP地址的机器上进行远程ssh 登录)
AllowUsers 用户名 (仅允许某个用户通过ssh 远程登录)
AllowUsers 用户名@IP地址 (仅允许某个用户通过对应地址的主机进行SSH远程登录)
(注意: DenyUsers 选项和AllowUsers 选项不要同时使用)
三、SSH客户端程序的登录以及使用

在Linux主机上登录Linux服务器的方法(格式):


[root@ssh1 ~]#ssh 用户名@登录Linux服务器的地址 -p 端口号
-登录验证方式

登录验证的方式有两种: (1)密码验证: 服务器对本地系统用户进行用户名和密码验证 容易受到暴力破解 (2)密钥对验证: 在客户端上创建密钥文件 (公钥和私钥) ,公钥上传到服务器指定位置,私钥自己保留,远程登录时进行加密、解密关联认证,增强远程管理安全性 注意:当两种验证方式都启用时,服务器优先使用密钥对验证,对于安全性较高的服务器,建议关闭密码验证 (公钥和私钥可以相互解密,但是不能相互推算,只有私钥能解密公钥,公钥也同样只有私钥可以解密)


******主配置文件的配置选项
[root@ssh1 ~]# vim /etc/ssh/sshd_config
。。。。。。
PasswordAuthentication yes (密码验证方式开启)
PubkeyAuthentication yes (密钥对验证开启)
AuthorizedKeysFile .ssh/authorized_keys (指定公钥库位置)
-SSH客户端程序的使用

OpenSSH客户端: 由openssh-clients软件包提供 (linux系统默认已经安装) ,包括ssh远程登录命令,以及scp远程复制和sftp文件传输命令


(1)ssh远程登录:
通过第三方工具使用ssh进行远程登录 (如Xshell、CRT、Putty等图形化工具)命令登录:
[root@ssh1 ~]# ssh 用户名@主机地址 -p 端口号

(端口号默认就是22,所以可以不用跟-p选项,除非修改了ssh的端口号,就需要指定ssh端口号)


(2)scp远程复制

语法结构:


[root@ssh1 ~]# scp root@对方的地址:对方文件位置 本地位置
(回车后,按照提示输入对方root账户的密码)
示例:
******将192.168.100.7主机的root目录下的AAA.txt文件复制到本机的root目录下,使用root账户登录
[root@ssh2 ~]# scp root@192.168.100.7:/root/AAA.txt /root/
The authenticity of host '192.168.100.7 (192.168.100.7)' can't be established.
ECDSA key fingerprint is SHA256:weaks0wagWSeyPZfM99IlV/pbISthvV5FMnczNdtcj4.
ECDSA key fingerprint is MD5:af:d9:66:c2:45:b3:c6:8e:0b:53:07:99:d7:8f:a0:06.
Are you sure you want to continue connecting (yes/no)? yes (会询问是否进行连接,输入yes即可)
Warning: Permanently added '192.168.100.7' (ECDSA) to the list of known hosts.
root@192.168.100.7's password: (输入root账户的密码)
AAA.txt 100% 0 0.0KB/s 00:00 (显示传输完毕)
[root@ssh2 ~]# ls (查看/root下发现多了一个AAA.txt)
AAA.txt anaconda-ks.cfg
******将本地root目录下的bbb目录复制到192.168.100.8主机下的root目录里
[root@ssh1 ~]# scp -r /root/bbb root@192.168.100.8:/root/ (复制目录需要加-r选项)
The authenticity of host '192.168.100.8 (192.168.100.8)' can't be established.
ECDSA key fingerprint is SHA256:k2YVo9hnbXnXqpinsSIIKc+xwNr0DYFgwd5J6thuuaU.
ECDSA key fingerprint is MD5:6a:9d:38:87:6f:67:63:b2:87:30:a0:4e:9e:1b:8f:a2.
Are you sure you want to continue connecting (yes/no)? yes (输入yes)
Warning: Permanently added '192.168.100.8' (ECDSA) to the list of known hosts.
root@192.168.100.8's password: (输入密码)
传输完毕后切换到192.168.100.8主机,发现root目录下多了一个bbb目录
[root@ssh2 ~]# ls
AAA.txt anaconda-ks.cfg bbb
(3)sftp文件传输 (安全的ftp)

语法结构:


登录
[root@ssh2 ~]# sftp 用户名@对方地址 (按回车输入密码)
下载
sftp>get 文件名
上传
sftp>put 文件名
退出登录
sftp>bye 或 exit
示例:
******登录主机192.168.100.8
[root@ssh1 ~]# sftp root@192.168.100.8
root@192.168.100.8's password: (输入密码)
Connected to 192.168.100.8.
sftp> get aaa.txt (下载aaa.txt文件)
Fetching /root/aaa.txt to aaa.txt
sftp> put bbb.txt (上传bbb.txt文件)
Uploading bbb.txt to /root/bbb.txt
bbb.txt 100% 0 0.0KB/s 00:00
sftp> bye (退出登录)
[root@ssh1 ~]# ls (查看root目录下,发现多了aaa.txt文件)
aaa.txt anaconda-ks.cfg bbb.txt
四、构建密钥对验证的SSH体系
Linux主机ip地址ssh1192.168.100.7ssh2192.168.100.8

要求: ssh2主机中的boss账户可以通过密钥对验证体系登录ssh1主机 步骤:


******在ssh2主机上创建boss账户,并且创建密钥对
[root@ssh2 ~]# useradd boss
[root@ssh2 ~]# passwd boss
更改用户 boss 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
******切换成boss账户登录,并且使用ecdsa的加密方式创建密钥对文件
[root@ssh2 ~]# su - boss
[boss@ssh2 ~]$ ssh-keygen -t ecdsa (连续按三次回车即可)
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/boss/.ssh/id_ecdsa): (私钥公钥存放位置)
Created directory '/home/boss/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/boss/.ssh/id_ecdsa.
Your public key has been saved in /home/boss/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:DngxV6VMBECrjdfAeFpPZx6vJjfMEINGeCdaquWh7yI boss@ssh2
The key's randomart image is:
+---[ECDSA 256]---+
| o+..o+.. |
| .++o.+ . |
| .=@o= * |
| =X O * o |
| ==.= S . . |
| o .o o + . |
| . o B |
|E . . + . |
| . o. |
+----[SHA256]-----+
密钥对文件的默认位置:/home/boss/.ssh/
id_ecdsa(私钥文件)id_ecfsa.pub(公钥文件)
[boss@ssh2 ~]$ ll /home/boss/.ssh
总用量 8
-rw------- 1 boss boss 227 12月 16 18:53 id_ecdsa
-rw-r--r-- 1 boss boss 171 12月 16 18:53 id_ecdsa.pub
******把公钥文件上传给ssh1主机的tmp目录下
[boss@ssh2 ~]$ scp /home/boss/.ssh/id_ecdsa.pub root@192.168.100.7:/tmp
The authenticity of host '192.168.100.7 (192.168.100.7)' can't be established.
ECDSA key fingerprint is SHA256:weaks0wagWSeyPZfM99IlV/pbISthvV5FMnczNdtcj4.
ECDSA key fingerprint is MD5:af:d9:66:c2:45:b3:c6:8e:0b:53:07:99:d7:8f:a0:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.7' (ECDSA) to the list of known hosts.
root@192.168.100.7's password:
id_ecdsa.pub 100% 171 193.1KB/s 00:00 (传输完成)
******切换到ssh1主机上,创建boss用户,并且在boss的家目录中创建公钥数据库的存放目录.ssh
[root@ssh1 ~]# useradd boss
[root@ssh1 ~]# mkdir -p /home/boss/.ssh
******把ssh2发送过来的公钥文件的内容追加到刚刚创建的公钥数据库中并且指定文件名为authorized_keys
[root@ssh1 ~]# cat /tmp/id_ecdsa.pub >> /home/boss/.ssh/authorized_keys
******在ssh2主机上使用密钥对验证登录ssh1的boos用户
[boss@ssh2 ~]$ ssh boss@192.168.100.7
Last login: Wed Dec 16 19:07:24 2020 from 192.168.100.8
[boss@ssh1 ~]$
不用输入密码,直接就可以使用boss用户登录到ssh1主机
五、TCP Wrappers访问控制
定义: 一种防护机制,作为应用服务与网络之间的一道特殊防线,提供额外的安全保障(类似于ACL)工作原理: 将TCP服务程序 包裹 起来,监听TCP服务程序端口,增加一个安全检测过程,外来的链接请求必须通过这层安全检测,获得许可后,才可以真正的访问服务程序 CentOS7.3上默认的软件包: tcp_wrappers-7.6-77.el7.x86_64提供: 执行程序tcpd 和共享链接库文件libwrap.so.*保护机制的两种实现方式: (1)直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd (2)其他的服务程序调用libwrap.so.*链接库,不需要运行tcpd (应用更广泛,更有效率)查看程序的共享库:
[root@ssh1 ~]# ldd /usr/sbin/sshd | grep "libwrap"
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f90ca8a6000)
TCP Wrappers对应的两个策略文件: (1)/etc/hosts.allow: 用来设置允许策略 (2)/etc/hosts.deny: 用来设置拒绝策略策略的配置格式: 服务程序列表:客户端地址列表 (1)服务程序列表 ALL: 表示所有服务 单个服务: 直接写服务名 例:httpd、ftpd等 多个服务程序: 服务名中间以 , 隔开 例:httpd,sshd (2)客户端地址列表 ALL: 任何客户端 LOCAL: 本机地址 单个IP: 直接写一个IP 例:192.168.100.1 网段地址: 例: 192.168.100.0/255.255.255.0 (表示192.168.100.0 这个网段) 以"."开始的域名: 所有的以同一个域名后缀结尾的主机 例:.baidu.com (也就是说前面不管是www还是mail只要是后缀是.baidu.com的都符合这个域名地址) 以"." 结束的网络地址: 表示一个网段 例:192.168.10. (表示192.168.10.0网段)访问控制的基本原则: (1)先检查/etc/hosts.allow 文件,找到相匹配的策略,就允许访问 (2)然后继续检查/etc/hosts.deny ,如果找到相匹配的策略,则拒绝 (3)如果检查两个文件都没有匹配的策略,则允许访问

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rzy1248873545/article/details/111246022

随机推荐

谈谈SpringBoot配置文件(三)

接下来我们来看看如何进行yaml配置文件值获取可以通过https://start.spring.io/快速建立SpringBoot,并导入maven项目;我们可以导入配置文...

boyas 阅读(679)

activiti7---自动任务的创建与执行

1.自动任务的创建可以通过设置自动执行工作流2.流程定义的部署/***流程定义的部署*/@TestpublicvoidactivitiDeployment(){//创建ProcessEngin...

Lesise 阅读(998)

--从输入URL到页面展示的详细过程

基本过程1、输入网址2、DNS解析3、建立tcp连接4、客户端发送HTPP请求5、服务器处理请求6、服务器响应请求7、浏览器展示HTML8、浏览器发送请求获取其他在HTML中的资源。1.输入网址(这没...

haihanShang 阅读(439)

spring异步请求并返回结果

spring异步请求并返回结果文章场景配置工作启动类添加注解模拟请求创建阻塞请求测试请求预期结果结语文章场景我最近在做大屏可视化,因此有时候一个折线图显示很多维度的信息,每...

董胜得 阅读(340)

img标签上title属性与alt属性的区别

a.12alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的。且长度必须少于100个英文字符或者用户必须保证替换文字尽可能的短,下·不支持图像显示或者图像显示被关闭的浏览器的用户ÿ...

didadidadidadid 阅读(113)