SSH远程访问

一SSH相关概念

 

1.1 SSH定义

 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。

1.2 SSH优点

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

 

1.3 SSH的客户端和服务端

 

  • SSH客户端:Putty、Xshell、CRT
  • SSH服务端:OpenSSH
  • OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统
  • CentOS 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动
  • 执行“ systemctl start sshd ”命令可启动 sshd服务
  • sshd 服务默认使用的TCP的 22端口

1.4 SSH配置文件

  • sshd 服务的默认配置文件是/etc/ssh/sshd_config
  • ssh_config和sshd_config都是ssh服务器的配置文件
  • 二者区别在于ssh_config是针对客户端的配置文件,sshd_config则是针对服务端的配置文件

 

 

二配置OpenSSH服务端

1 sshd_config配置文件的常用选项设置

Port 22 监听端口 22
ListenAddress 0.0.0.0 监听地址为任意网段,也可以指定OpenssH服务器的具体Ip
LoginGraceTime 2m 登录验证时间为2分钟
PermitRootLogin yes 允许远程登录root 账号 (默认yes 允许, no 表示禁止)
MaxAuthTries 6 最大重试次数为 6 (每次账号登录时,允许输入6次账号和密码)
MaxSessions 10 每次连接,最大会话数为10
PermitEmptyPasswords no 禁止空密码登录(默认no 禁止, yes 表示 允许)
PasswordAuthentication yes 启用密码验证 (默认yes 开启, no表示关闭)
UseDNS no 禁用DNS反向解析,以提高服务器的响应速度(no 表示禁止, yes 表示开启)
PidFile /var/run/sshd.pid

保存sshd 服务进程pid 号文件

修改完配置文件需要 重新加载配置文件, 或者 重启sshd 服务。 如果设置了某些selinux 或者 防护墙 策略中不允许的 ,需要修改selinux 和防火墙策略
[root@host13 ssh]# systemctl reload sshd       #重新加载 sshd 配置文件
[root@host13 ssh]# systemctl restart sshd      #重启 sshd 服务

[root@host13 ssh]# systemctl stop firewalld    #关闭 firewalld 防火墙
[root@host13 ssh]# setenforce 0                # 设置selinux 等级为permissive 
# 防火墙系统默认开机自启, selinux 的设置也是 临时的, 如果重启操作系统,会失效

2 通过系统配置文件,配置登录白名单/黑名单

 

sshd 服务系统配置文件 : /etc/ssh/sshd_config


### 2.4.1 配置用户登录白名单/黑名单

shd 的系统配置文件 /etc/ssh/sshd_config 最后添加如下任意一行,然后重启sshd服务

AllowUsers 用户远程登录白名单(仅在该配置里的用户可以远程登录,不与 黑名单一起用)

DenyUsers 用户远程登录黑名单(在该配置里的用户禁止远程登,不与白名单一起用

 服务端设置:

 

[root@host13 ~]# vim /etc/ssh/sshd_config    #修改sshd 系统配置文件
AllowUsers  zhangsan  lisi@192.168.23.10  wangwu@192.168.23.0/24  zhaoliu@192.168.23.*  
#在配置文件最后添加白名单

[root@host13 ~]# systemctl restart sshd      #重启服务

  

3 配置IP 登录限制

在系统配置文件 /etc/ssh/sshd_config 文件中 设置,禁止全局密码登录,并且在最后设置允许匹配网段密码登录

[root@host13 ~]# systemctl stop firewalld 
[root@host13 ~]# setenforce 0
[root@host13 ~]# vim /etc/ssh/sshd_config 
PasswordAuthentication no
......
Match Address  192.168.23.12
  PasswordAuthentication yes 
[root@host13 ~]# systemctl restart sshd

  

三ssh 客户端配置及功能

1 ssh 客户端远程登录格式

ssh [-p 端口号] [-l 登录名] [登录名@]**ip/主机名** [command]

[root@host10 ~]# ssh -p 22 -l root 192.168.23.13 ps aux | grep sshd
root@192.168.23.13's password: 
root       1399  0.0  0.2 147788  5228 ?        Ss   22:14   0:00 sshd: root@pts/0
root       2962  0.0  0.2 147784  5368 ?        Ss   23:16   0:00 sshd: root@pts/1
root       3069  0.0  0.2 105996  4120 ?        Ss   23:20   0:00 /usr/sbin/sshd -D
root       3546  3.0  0.2 147784  5284 ?        Ss   23:43   0:00 sshd: root@notty

  

[root@host10 ~]# echo " 192.168.23.13   host13"  >> /etc/hosts
[root@host10 ~]# ssh host13
root@host13's password: 
Last login: Sat Jul  3 23:46:09 2021 from 192.168.23.10
[root@host13 ~]# 

  

2 scp 远程复制

格式:

下行复制

scp [-r] 远程用户名@远程主机ip:远程目录或文件 本地目录

上行复制

scp [-r] 本地目录或文件 远程用户名@远程主机ip:远程目录

-r : 复制目录时,需要加上 -r 选项

[root@host10 opt]# scp root@192.168.23.13:/etc/shadow  /opt/
root@192.168.23.13's password: 
shadow                                                                           100% 1719     2.2MB/s   00:00    
[root@host10 opt]# pwd
/opt
[root@host10 opt]# ls
rh  shadow

  

root@192.168.23.13's password: 
passwd                                                                           100% 2104     1.6MB/s   00:00    
[root@host10 opt]# ssh -l root 192.168.23.13 ls /opt
root@192.168.23.13's password: 
passwd
rh

  注意,远程复制时,要注意远程用户的权限。

[root@host10 opt]# scp /var/log/messages  zhangsan@192.168.23.13:/opt
zhangsan@192.168.23.13's password: 
Permission denied, please try again.
zhangsan@192.168.23.13's password: 
Permission denied, please try again.
zhangsan@192.168.23.13's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
lost connection
[root@host10 opt]# ssh -l root 192.168.23.13 ls -ld /opt
root@192.168.23.13's password: 
drwxr-xr-x. 3 root root 30 7月   3 23:21 /opt
[root@host10 opt]# 

  

3. sftp 安全文件传输协议

sttp 协议可以远程进行文件获取,文件内容传输,文件管理登录操作。由于使用了加密/解密 技术,传输效率比普通FTP 要低,但是安全性更高,操作语法与FTP 几乎一样。SFTP使用ssh的数据通道传输,使用的端口是 tcp 22 端口。sftp 登录时,默认登录到远程用户的家目录中

[root@host10 ~]# sftp root@192.168.23.13
root@192.168.23.13's password: 
Connected to 192.168.23.13.
sftp> pwd
Remote working directory: /root
sftp> cd /opt/
sftp> ls
passwd  rh      
sftp> get /opt/passwd  /opt/
Fetching /opt/passwd to /opt/passwd
/opt/passwd                                                                      100% 2104     1.4MB/s   00:00    
sftp> put /var/log/messages /opt/
Uploading /var/log/messages to /opt/messages
/var/log/messages                                                                100%  737KB 105.8MB/s   00:00    
sftp> ls
messages  passwd    rh        
sftp> rm passwd 
Removing /opt/passwd
sftp> ls
messages  rh        
sftp> quit

  

 

四sshd服务支持两种验证方式

1 密码验证
密码验证对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
2 密钥对验证
密钥对验证要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
3 公钥和私钥的关系
公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
不能根据一个密钥来推算出另一个密钥。
公钥对外公开,私钥只有私钥的持有者才知道。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。

 

posted @ 2021-07-13 13:03  青山不改水长流  阅读(251)  评论(0)    收藏  举报