1.1ssh介绍
1.SSH远程登录服务介绍说明
SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Working Group)制定;
在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。
确保了传递的数据安全。
SSH是专为远程登录会话和其他网络服务提供的安全性协议。
利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,
绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。
在默认状态下,SSH服务主要提供两个服务功能:
2.SSH远程登录服务功能作用
a 一是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务;
b 另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务(vsftp,proftp)。
3.SSH远程登录服务排错思路
01. 检查链路是否通畅---ping(icmp)/tracert/traceroute
02. 检查链路是否阻断---将防火墙功能关闭
03. 检查服务是否开启---ss/netstat -lntup(服务端检查) /telnet/nmap/nc(客户端检查)
1.2ssh与telnet对比
SSH
1.SSH服务端口号信息为22
2.SSH服务采用密文方式传输数据
3.SSH服务默认支持root用户进行远程登录
Telnet
1.telnet服务端口号信息为23
2.telnet服务采用明文方式传输数据
3.telnet服务默认不支持root用户进行远程登录
1.3telnet 服务安装及操作
[root@backup ~]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
[root@backup ~]# service xinetd start
Xshell:\> telnet 10.0.0.41 23
Connecting to 10.0.0.41:23...
Connection established.
Escape character is '^@]'.
CentOS release 6.9 (Final)
Kernel 2.6.32-696.el6.x86_64 on an x86_64
backup login: oldboy
Password:
[oldboy@backup ~]$
1.4基于口令的验证
①. ssh客户端发出连接请求
>/root/.ssh/known_hosts
②. ssh服务端会发出确认信息,询问客户端你是否真的要连接我
③. ssh客户端输入完成yes,会等到一个公钥信息
cat /root/.ssh/known_hosts
④. ssh服务端将公钥信息发送给ssh客户端
⑤. ssh客户端利用密码进行登录
基于口令的登录验证过程
[root@backup .ssh]# >known_hosts
[root@backup .ssh]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 11 15:33 known_hosts
[root@backup .ssh]# ssh 10.0.0.31
The authenticity of host '10.0.0.31 (10.0.0.31)' can't be established.
RSA key fingerprint is c3:74:5f:6a:ad:14:fa:a0:c1:6d:09:3a:4b:08:51:d6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.31' (RSA) to the list of known hosts.
root@10.0.0.31's password:
Last login: Mon Mar 11 13:56:13 2019 from 10.0.0.1
[root@nfs01 ~]# exit
logout
Connection to 10.0.0.31 closed.
[root@backup .ssh]# ll
total 4
-rw-r--r-- 1 root root 391 Mar 11 15:33 known_hosts
[root@backup .ssh]# cat known_hosts
10.0.0.31 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuDdWcY22UWC5I/bDAvNBw2ZxMMdG7pK1NsboILsFl1IETeSiZeTvSHRkq4L2bwXuGSmV7Ym7vET2Hdv0YZC/IY9mNd9nEXMVSafjNmZdQ3R064QQ+mRaKQWsiu/RXOZyQ6VxfsNC+BJv9oqskRXehb5sT+cZTIdzS8DYHhrSywIMTkcZvMOEtilioc9osnzixtQ3p+iDt3z+dLEsUHMlxXdiE2snnTJJWFNjygb7B+RlUNH5XiDvyIShdLnFhG4fD5ATPntbfLRZrs0XPPNSPxaO1Jgzg6l/btpYy6F4rh6/ZDtiia/3X9uk93ZGzy/OR//ZE5ukdxjhi3MUQRMtjw==
[root@backup .ssh]# ssh 10.0.0.31
root@10.0.0.31s password:
Permission denied, please try again.
root@10.0.0.31s password:
Last login: Mon Mar 11 15:33:48 2019 from 10.0.0.41
[root@nfs01 ~]# logout
Connection to 10.0.0.31 closed.
[root@backup .ssh]#
加密技术分为v1和v2两个版本
sshv1版本不会经常更换锁头和钥匙,因此会有安全隐患
sshv2版本会经常更换锁头和钥匙,因此提高了远程连接安全性
1.5基于密钥方式实现远程登录
①. ssh管理服务器上创建密钥对信息(公钥 私钥)
②. ssh管理服务器上将公钥发送给被管理服务器
③. ssh管理服务器向被管理服务器发送连接请求
④. ssh被管理服务器向管理服务器发送公钥质询
⑤. ssh管理服务器处理公钥质询请求,将公钥质询结果发送给被管理主机![](https://s1.51cto.com/images/blog/201908/01/ddc98bd3ecea1a6e688aca19cf0a2121.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
⑥. ssh被管理服务器接收公钥质询响应信息,从而确认认证成功
⑦. ssh管理服务端可以和被管理服务端建立基于密钥连接登录
基于密钥登录方式部署流程
第一个里程:在管理主机上创建密钥对信息
ssh-keygen -t dsa <-- 创建密钥对命令 -t dsa表示指定密钥对加密类型
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <-- 确认私钥文件所保存的路径
/root/.ssh/id_dsa 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_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
46:c8:21:b9:99:6e:0c:59:39:66:38:7a:97:29:51:76 root@m01
The key's randomart image is:
+--[ DSA 1024]----+
| o+oE |
| +.B+ o |
| . B Bo . |
|. = B . |
| . * S |
| + . |
| . |
| |
| |
+-----------------+
第二个里程:将管理主机上公钥信息发送给被管理主机
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
root@172.16.1.31's password:
Now try logging into the machine, with "ssh '172.16.1.31'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
第三个里程:进行远程管理测试(基于密钥的方式进行远程管理)
ssh 172.16.1.31 <-- 可以不用输入密码信息,就能登陆成功
ssh 172.16.1.31 uptime <-- 可以不用登陆到远程主机,就可以直接查看远程主机信息
普通用户操作过程
[root@nfs01 ~]# su - oldboy
[oldboy@nfs01 ~]$ ssh-
ssh-add ssh-agent ssh-copy-id ssh-keygen ssh-keyscan
[oldboy@nfs01 ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oldboy/.ssh/id_dsa):
Created directory '/home/oldboy/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oldboy/.ssh/id_dsa.
Your public key has been saved in /home/oldboy/.ssh/id_dsa.pub.
The key fingerprint is:
bb:b4:59:30:de:4d:91:a4:45:c8:3f:53:ca:2e:3d:c6 oldboy@nfs01
The key's randomart image is:
+--[ DSA 1024]----+
| . o+ |
| o+ .. |
| .ooo |
| *. |
| S +.o |
| . =.oE |
| + oo.. |
| . = |
| + |
+-----------------+
[oldboy@nfs01 ~]$ ssh-key
ssh-keygen ssh-keyscan
[oldboy@nfs01 ~]$ ssh-copy-id -i /home/oldboy/.ssh/id_dsa.pub oldboy@10.0.0.41
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
RSA key fingerprint is c3:74:5f:6a:ad:14:fa:a0:c1:6d:09:3a:4b:08:51:d6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.41' (RSA) to the list of known hosts.
oldboy@10.0.0.41's password:
Now try logging into the machine, with "ssh 'oldboy@10.0.0.41'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[oldboy@nfs01 ~]$ ssh oldboy@10.0.0.41 pwd
/home/oldboy
[oldboy@nfs01 ~]$
1.6SSH服务端配置文件信息说明(/etc/ssh/sshd_config)
Port 52113 <- 修改ssh服务端口号信息
ListenAddress 0.0.0.0 <- 主要作用提升网络连接安全性,此时如果有多个网卡,配置了多个Ip,可以通过这些Ip登录服务器
PS:监听地址只能配置为服务器网卡上拥有的地址
#ListenAddress 172.16.1.31 只能通过172.16.1.31来登录服务器
PermitRootLogin no <- 是否允许root用户远程登录
PermitEmptyPasswords no <- 是否允许空密码
UseDNS no <- 是否进行DNS反向解析(提升ssh远程连接效率)
GSSAPIAuthentication no <- 是否进行远程GSSAPI认证(提升ssh远程连接效率)
1.7SSH远程管理服务***防范
①. 利用密钥登录提高安全性
②. 利用牤牛阵法提高安全性
安全设备策略阻止访问,只放开少量服务端口
开启SSH监听地址功能,只监听内网网卡地址
③. 利用服务器不配置外网IP提高安全性
④. 利用授权与系统安装最小化提高安全性
⑤. 利用指纹信息对系统重要文件进行加密处理
⑥. 利用系统重要文件加锁功能提高安全性
1.8SSH远程管理服务连接功能
1.ssh远程连接
①. SSH远程连接方法--linux客户端连接
ssh -p22 oldboy@10.0.0.61
②. SSH远程连接方法--windows客户端连接
利用xshell/SecureCRT/Putty软件连接
③. SSH远程连接不登录服务器执行命令方法
ssh -p22 oldboy@10.0.0.61 "free -m"
2.SSH远程管理服务复制功能
①. SSH远程复制方法--scp
scp -P22 -rp /tmp/oldboy oldboy@10.0.0.41:/tmp
3.sftp
bye Quit sftp <-- 表示退出sftp传输模式
cd path Change remote directory to 'path' <-- 改变远程目录信息
pwd Display remote working directory <-- 显示远程主机当前目录信息
lcd path Change local directory to 'path' <-- 改变本地目录路径信息
lpwd Print local working directory <-- 输出本地目录路径信息
get [-P] remote-path [local-path]
Download file <-- 下载文件命令
put [-P] local-path [remote-path] <-- 上传文件命令
Upload file
[root@nfs01 ~]# sftp -oPort=22 10.0.0.41
Connecting to 10.0.0.41...
root@10.0.0.41's password:
sftp> mkdir /oldboy/sftp
sftp> ls -l /oldboy/
drwxr-xr-x 2 root root 4096 Mar 11 17:55 sftp
sftp> cd /oldboy/sftp
sftp> pwd
Remote working directory: /oldboy/sftp
sftp> touch file
Invalid command.
sftp> lpwd
Local working directory: /root
sftp> lls -l
total 48
-rw-------. 1 root root 1061 Feb 18 12:24 anaconda-ks.cfg
-rw-r--r-- 1 root root 285 Mar 11 17:44 back.sh
-rw-r--r-- 1 root root 0 Mar 11 09:11 inotify
-rw-r--r--. 1 root root 21736 Feb 18 12:24 install.log
-rw-r--r--. 1 root root 5890 Feb 18 12:22 install.log.syslog
-rw-r--r-- 1 root root 21 Mar 7 21:14 [root@backup
-rw-r--r-- 1 root root 20 Mar 11 17:43 test.log
sftp> put back.sh
Uploading back.sh to /oldboy/sftp/back.sh
back.sh 100% 285 0.3KB/s 00:00
sftp> pwd
Remote working directory: /oldboy/sftp
sftp> get back.sh
Fetching /oldboy/sftp/back.sh to back.sh
/oldboy/sftp/back.sh 100% 285 0.3KB/s 00:00
sftp> lpwd
Local working directory: /oldboy
sftp> lls -l
total 12
-rw-r--r-- 1 root root 285 Mar 11 17:59 back.sh
-rw-r--r-- 1 oldboy oldboy 20 Mar 11 17:39 test.log
drwxr-xr-x 3 root root 4096 Mar 7 17:11 tmp
sftp>