SSH远程服务
SSH远程服务介绍说明
1.SSH是secure shell Protocol的缩写,明白IETF网络工作小组(Network working Group)制定:在数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行传输,确保数据的安全
2.SSH是专门为远程登陆会话和其它网络服务提供安全性协议,利用SSH协议可以有效的防止远程管理过程信息泄漏问题,在当前的生产运维环境中,绝大多数企业都会采用SSH协议服务来代替传统的不安全远程联机服务软件,如telnet(23端口,非加密),在默认的情况下,ssh服务主要提供两个服务功能:一、是提供类似telnet远程服务连接,即SSH服务,二、是类似FTP服务的sftp-server,借助SSH协议来传输数据,提供更安全的SFTP服务(vsftp,proftp)
SSH远程登陆排错思路
1.检查链路是否畅通,使用Ping/tracert/traceroute命令进行检测
2.检查链路是否被阻断,查看防火墙状态,关闭防火墙
3.检查服务是否开启,使用ss/netstat -nltup(服务端检查),telnet/nmap/nc(客户端检查)
SSH远程服务概念说明
ssh加密技术v1与v2的区别
sshv1:不会经常更换公钥与私钥,因此会有安全隐患
sshv2:会经常更换公钥与私钥,提高了远程连接安全性
基于口令ssh远程连接过程
1.ssh客户端发起请求
2.ssh服务端会发出确认信息,询问客户端是否真的要连接我
3.ssh客户端确认(输入yes),会等到一个公钥信息
4.ssh服务端会把公钥信息发给送ssh客户端
5.ssh客户端利用口令进行登陆
#示例:
[root@m01 ~]# ssh -p10000 10.0.0.41 #发起请求
The authenticity of host '[10.0.0.41]:10000 ([10.0.0.41]:10000)' can't be established
.RSA key fingerprint is 4c:ec:2a:a5:ba:cb:97:f2:3b:a7:e8:6d:91:33:55:0c.
Are you sure you want to continue connecting (yes/no)? yes #询问客户端是否真的连接
Warning: Permanently added '[10.0.0.41]:10000' (RSA) to the list of known hosts.
root@10.0.0.41's password: #输入口密
Last login: Sun Feb 17 23:09:53 2019 from 10.0.0.253
[root@backup ~]# exit
logout
Connection to 10.0.0.41 closed.
[root@m01 ~]# cat /root/.ssh/known_hosts #存放公钥的位置
[10.0.0.41]:10000 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyTuUJJEN8epIAn9WOLsz19to490B41L
WVSGN3pAUc+dkQD4OgR54z4DUESKA9oFKSxVWwDB78uE5nqJaD16Lx7kkMzdBobi1rxigCx7yl+eg7R7KKNM7DVdI7Wsb0P+3BMt16qwWnq/S2imqz9dVWpF2YyYS3t46bgdj8Xt79Bywm48SkgWtbGBC/mgs5z3JIkhwDc900Ug75wsSfgu2NvPacU7mih47dIu0xg/PeGbfaNYOrTGez9bkBq2MslzZiZWl0OYlongFCkPzh3V0ryTX63p1vAlE3wNPl6oYp1ChGosrtcMeoYUKBstufAzV8Ti4NzV/l13wBz0HeBA8Jw==
基于密钥远程连接过程
1.在ssh管理服务器上创建密钥对信息(公钥与私钥)
2.ssh管理服务器上将公钥发送给被管理主机
3.ssh管理服务器向被管理主机发送请求
4.ssh被管理主机向管理服务器发送公钥质询
5.ssh管理服务器处理公钥质询请求,将公钥质询请求结果发送给被管理主机
6.ssh被管理主机接收公钥质询响应信息,从而确认认证成功
7.ssh管理服务器可以和被管理主机建立基于密钥登陆
基于密钥远程连接部署过程
#第一个里程:创建密钥对
[root@m01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #确认私钥文件保存路径
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y #如果私钥文件已存在,提示是否覆盖
Enter passphrase (empty for no passphrase): #确认是否给私钥设置密码信息(一般为空)
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
d7:c3:8c:83:be:da:ef:74:63:c9:04:35:82:6d:44:ad root@m01
The key's randomart image is:
+--[ RSA 2048]----+
| =+.o |
| . oo.. |
| ... |
| .E* |
| S + * |
| . . + o |
| . . * |
| . o o . |
| ..ooo |
+-----------------+
#第二个里程:将公钥发送给被管理主机,使用ssh-copy-id -i "ip地址 -p端口"进行分发密钥
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.1.41
ssh: connect to host 172.16.1.41 port 22: Connection refused #此处报错是因为ssh端口号变化了,所以需要在后面加上-p参数
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub "172.16.1.41 -p10000"
The authenticity of host '[172.16.1.41]:10000 ([172.16.1.41]:10000)' can't be establi
shed.RSA key fingerprint is 4c:ec:2a:a5:ba:cb:97:f2:3b:a7:e8:6d:91:33:55:0c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.16.1.41]:10000' (RSA) to the list of known hosts.
root@172.16.1.41's password:
Now try logging into the machine, with "ssh '172.16.1.41 -p10000'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
#第三个里程:进行免密登陆
[root@m01 ~]# ssh -p10000 172.16.1.41
Last login: Mon Feb 18 10:55:04 2019 from 10.0.0.61
#不远程登陆,直接查看远程主机的信息
[root@m01 ~]# ssh -p10000 172.16.1.41 hostname
backup
SSH远程管理服务端与客户端安装
服务端:yum -y install openssh-server
服务端重要文件信息:
1. 服务启动脚本文件 /etc/rc.d/init.d/sshd
2. 服务程序配置文件 /etc/ssh/sshd_config
3. 服务守护进程命令 /usr/sbin/sshd
客户端:yum -y install openssh-clients
客户端重要文件信息:
1. 安全拷贝命令 /usr/bin/scp
2. 安全传输命令 /usr/bin/sftp
3. 安全登录命令 /usr/bin/ssh
4. 创建私钥命令 /usr/bin/ssh-keygen
5. 传输公钥命令 /usr/bin/ssh-copy-id
SSH远程连接配置文件说明(/etc/ssh/sshd_config)
Port 10000 <- 修改ssh服务端口号信息
ListenAddress 0.0.0.0 <- 主要作用提升网络连接安全性
PS:监听地址只能配置为服务器网卡上拥有的地址
PermitRootLogin no <- 是否允许root用户远程登录
PermitEmptyPasswords no <- 是否允许空密码
UseDNS no <- 是否进行DNS反向解析(提升ssh远程连接效率)
GSSAPIAuthentication no <- 是否进行远程GSSAPI认证(提升ssh远程连接效率)
sftp常用命令与操作
sftp连接语法:
sftp -oIdentityFile=私钥地址 -oPort=端口号 用户名@IP地址(如没有私钥则用口令登陆)
[root@m01 ~]# sftp -oIdentityFile=/root/.ssh/id_rsa -oPort=10000 172.16.1.41
Connecting to 172.16.1.41...
sftp>
说明:本地命令都需要加l,远程则不需要
bye Quit sftp 退出
cd path Change remote directory to 'path' 进行远程目录
chgrp grp path Change group of file 'path' to 'grp' 改变远程目录或文件所属组
chmod mode path Change permissions of file 'path' to 'mode' 改变远程目录权限
chown own path Change owner of file 'path' to 'own' 改变远程目录的拥有者
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path' 查看远程目录的磁盘信息
exit Quit sftp 退出
get [-P] remote-path [local-path] Download file 下载远程数据到本地
help Display this help text
lcd path Change local directory to 'path' 进入本地文件路径
lls [ls-options [path]] Display local directory listing 查看本地目录
lmkdir path Create local directory 在本地新建目录
lpwd Print local working directory 查看本地的路径
ls [-1aflnrSt] [path] Display remote directory listing 查看远程目录信息
lumask umask Set local umask to 'umask' 查看本地初始权限
mkdir path Create remote directory 在远程目录新建目录
put [-P] local-path [remote-path] Upload file 上传文件
pwd Display remote working directory 显示远程路径
quit Quit sftp 退出
rename oldpath newpath Rename remote file 重命令远程目录文件名
rm path Delete remote file 删除文件
rmdir path Remove remote directory 删除文件夹
version Show SFTP version 查看版本信息
scp远程复制命令--属于远程全量复制
#将远程服务器数据拉取到本地
[root@m01 ~]# scp -P10000 172.16.1.41:/backup/12.tar.gz /tmp
12.tar.gz 100% 124KB 124.5KB/s 00:00
[root@m01 ~]# cd /tmp
[root@m01 tmp]# ll
total 128
-rwxr-xr-x 1 root root 127456 Feb 18 14:43 12.tar.gz
#将本地数据复制到远程服务器
[root@m01 tmp]# scp -P10000 /tmp/12.tar.gz 172.16.1.41:/tmp
12.tar.gz 100% 124KB 124.5KB/s 00:00
[root@m01 tmp]#
SSH远程管理服务入侵防范
1.利用密钥登陆提高安全性
2.利用牤牛阵法提高安全性(a.安全设备策略阻止访问,只放开少量服务端口 b.开启SSH监听地址功能,只监听内网网卡地址)
3.利用服务器不配置外网IP提高安全性
4.利用授权与系统安装最小化提高安全性
5.利用指纹信息对系统重要文件进行加密处理
6.利用系统重要文件加锁功能提高安全性