简介
1 2 3 4 5 6 |
SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢? 1.提供远程连接的服务 linux远程连接: ssh telnet windows的远程连接: RDP (remote desktop)、向日葵、teamviewer 2.对传输数据进行加密 |
ssh和telnet 两者区别
1 2 3 4 5 6 7 |
1.telnet: 1)不能使用root用户登录,只能使用普通用户 2)数据包没有进行加密,传输都是明文的 2.ssh: 1)可以使用任意用户登录 2)数据传输都是加密的 |
ssh命令
1 2 3 4 5 6 7 8 9 10 11 |
[root@web01 ~]# ssh root@172.16.1.31 -p 22 #命令拆分 ssh #命令 root #系统用户(如果不写,就使用当前服务器的当前用户) @ #分隔符 172.16.1.31 #远程主机的IP -p #指定端口(终端不支持) 22 #端口(默认22) -o StrictHostKeyChecking=no #首次访问时不验证身份 |
SSH验证方式
基于用户名密码远程连接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#需要知道服务器的IP,端口,系统用户,用户密码才能链接远程主机 [root@nfs ~]# ssh root@172.16.1.7 -p 2222 root@172.16.1.7's password: Last login: Tue Aug 18 00:44:33 2020 from 10.0.0.1 [root@web01 ~]# #设置密码 1.复杂的密码(容易忘记) 2.简单的密码(容易被破解) 3.每台机器密码都不一样 4.密码是动态的 5.密码三个月一变 6.密码错误三次,锁定用户 7.密码肯定是没有规律的 |
基于密钥的方式
1 |
默认情况下,通过ssh客户端命令登陆远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式。 |
1)生成密钥对
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@web01 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): 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: SHA256:n618dqJXK1Z1mvHcv31VadZTBwni3gXEghWSp9+HTj4 root@web01 The key's randomart image is: +---[RSA 2048]----+ | .++++..o | | ooo.... o| | o.. . =| | .. . ..==| | S.....oB=| | ..o+ * =| | o+.+ .o| | . .E o +| | +* = .+| +----[SHA256]-----+ [root@web01 ~]# |
2)将公钥发送至要免密登录的服务器
1) 手动复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#查看公钥 [root@web01 ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbOLFAuHJy6xtGOBFIWALpyWNyR3ixgULtv9uVMELre1iVv6S/fBT3YqKR6naX1y1oyhWBD6njMhXDANuG9OQ/ABTHrgOJrF5JMY1AS9jI5DrMaIdfoBXcmck6RuID5yddlLiA6VdeHI8ndtth7bu6Ed50otviNbzF7NG7chX9oGbju6uGMY12pb0BKCtJaJ9qycGJOZCi8OyrIycJBexsiC+DYOwvXjmtdRtf7KNBnHSDDEIsywQNku1/WXUE0l4CMoZ/zjgO19fdxfdbCT4qAWTz0r9CDUzhEFIVZgz73KLahy+IXIhNupHXf0VcrS3h11rWDUrOeIw2oIZHEPz3 root@web01 #将公钥写到要连接的机器 [root@nfs ~]# vim .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbOLFAuHJy6xtGOBFIWALpyWNyR3ixgULtv9uVMELre1iVv6S/fBT3YqKR6naX1y1oyhWBD6njMhXDANuG9OQ/ABTHrgOJrF5JMY1AS9jI5DrMaIdfoBXcmck6RuID5yddlLiA6VdeHI8ndtth7bu6Ed50otviNbzF7NG7chX9oGbju6uGMY12pb0BKCtJaJ9qycGJOZCi8OyrIycJBexsiC+DYOwvXjmtdRtf7KNBnHSDDEIsywQNku1/WXUE0l4CMoZ/zjgO19fdxfdbCT4qAWTz0r9CDUzhEFIVZgz73KLahy+IXIhNupHXf0VcrS3h11rWDUrOeIw2oIZHEPz3 root@web01 #授权 [root@nfs ~]# chmod 600 .ssh/authorized_keys #连接测试 [root@web01 ~]# ssh 172.16.1.31 Last failed login: Tue Aug 18 00:51:38 CST 2020 from 10.0.0.1 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Mon Aug 17 23:39:28 2020 from 172.16.1.7 [root@nfs ~]# |
2) 命令推送公钥
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#命令推送公钥 [root@web01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.41 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub" The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established. ECDSA key fingerprint is SHA256:mOtCaBS+53EDW9mKoXVj4v5Q1E1fYB0DexMHr/WzTc4. ECDSA key fingerprint is MD5:75:12:f6:05:4c:5d:66:6f:21:0d:8e:0f:fc:bb:36:d6. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@172.16.1.41's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@172.16.1.41'" and check to make sure that only the key(s) you wanted were added. [root@web01 ~]# #连接测试 [root@web01 ~]# ssh 172.16.1.41 Last login: Mon Aug 17 23:32:44 2020 from 10.0.0.1 |
ssh安全优化
优化内容
1 2 3 4 5 6 |
SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。 1.更改远程连接登陆的端口 2.禁止ROOT管理员直接登录 3.密码认证方式改为密钥认证 4.重要服务不使用公网IP地址 5.使用防火墙限制来源IP地址 |
配置
1 2 3 4 5 6 |
[root@m01 ~]# vim /etc/ssh/sshd_config Port 2222 #修改ssh端口 PermitRootLogin no #禁止使用root登录服务器 PasswordAuthentication no #禁止使用密码登录服务器 UseDNS no #禁止ssh进行dns反向解析,影响ssh连接效率参数 GSSAPIAuthentication no #禁止GSS认证,减少连接时产生的延迟 |