一、SSH服务
1.1 SSH介绍
SSH是Secure Shell Protocol的简写,由IETF国际互联网工程任务组制定。在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行数据传输,以确保传输数据安全。
SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效地防止远程管理过程中的数据信息泄露问题,在当前的生产环境运维工作中,几乎99%的企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密连接)等。
小结
- SSH是安全的加密协议,用于远程连接Linux系统。
- SSH默认端口是22,安全协议版本为SSH2,除了SSH2之外还有SSH1(有漏洞)。
- SSH服务端主要包含两个服务功能:SSH远程连接和SFTP服务。
- Linux SSH客户端包含ssh远程连接命令、远程拷贝scp命令、sftp连接命令等。
1.2 安装启动ssh服务
SSH客户端包含SSH以及像scp(远程拷贝)、slogin(远程登录)、SFTP(安全FTP文件传输)等应用程序。
linux默认安装了ssh服务,可以直接启动
systemctl start sshd # 启动ssh服务
# 如果没有安装使用yum方式安装ssh
# yum install openssh -y
1.3 ssh配置文件
ssh配置文件是 /etc/ssh/sshd_config
,如果对安全性要求不高,仅仅提供SSH服务的情况下,可以不需要修改任何配置
Port 22 # 端口号
PermitRootLogin yes # 允许root用户远程登录
PermitEmptyPassword no # 禁止空密码登录
UserDNS no # 不适用dns,可以提高连接速度
1.4 ssh登录远程服务器
我这里以Centos8连接我的Centos7,Centos7的IP地址是192.168.100.108
。注意登录输入的密码是不会显示出来的
# ssh 用户名@主机名 默认端口为22,如果远程服务器修改了端口,则需要指定端口登录 加 -p 参数
ssh rion@192.168.100.108
ssh -p22 rion@192.168.100.108
========================================================================
# 退出远程登录
[rion@centos8-106 ~]$ logout 或者 exit
Connection to 192.168.100.108 closed
如果连接出错,请检查是否关闭了防火墙,第一次连接是会询问你要不要接收远程主机发过来的key,此时填yes
即可
当你第一次连接成功后,系统默认会在连接方(centos8)用户目录下创建一个~/.ssh/known_hosts
文件,里面包含了远程主机的公钥。即下次登录不会询问你,直接输入密码即可。
1.5 scp 命令使用
- 在tmp目录下创建1.txt文件
[root@centos8-106 ~]# echo "123456 centos8-106" >/tmp/1.txt
[root@centos8-106 ~]# cat /tmp/1.txt
123456 centos8-106
- 使用scp把1.txt复制到centos7的tmp目录下
scp -rp /tmp/1.txt rion@192.168.100.108:/tmp
# -P 大写,指定端口
# -r 递归,表示拷贝目录
# -p 小写,表示在拷贝前保持文件或目录属性
# 上面命令的意思是:把本地/tmp/1.txt 文件拷贝到远程服务器(192.168.100.108)的 tmp目录下
小结:
- scp是加密的远程拷贝,而cp仅为本地拷贝。
- 可以把数据从一台机器推送到另一台机器,也可从其他机器把数据拉取到执行命令的服务器。
- 每次都是全量完整拷贝,因此效率不高,适合第一次拷贝时使用,如果需要增量拷贝,用rsync命令
1.6 基于秘钥的远程登录
如果每次登录都需要输入密码,就会显得太麻烦而且容易泄露密码,这时候我们就需要建立秘钥,用秘钥直接登录,不需要输入密码。
该图中我们以centos7生成秘钥,秘钥包括公钥和私钥,公钥可以理解为锁🔒,私钥可以理解为钥匙🔑。
centos 7 生产公钥和私钥,公钥(锁)给到指定的服务器上(centos 8),当centos 7 直接登录centos8时,会坚持公钥和私钥是否匹配,匹配成功则登录到centos8中。
生成秘钥
在centos7创建秘钥时,一路回车,默认生成在 /root/.ssh/
目录下,id_rsa
是私钥,id_rsa.pub
是公钥
ssh-keygen
# -t 指定加密方式,默认采用RSA类型秘钥,加密方式为sha256。可以换成 dsa 来建立DSA类型。
# ssh-keygen -t dsa
提供两种一键非交互式创建秘钥的方式
ssh-keygen -t dsa -P '' -f ~/.ssh/id_rsa >/dev/null 2>&1 # 方式1
echo -e "\n" | ssh-keygen -N "" # 方式2
分发秘钥
- 使用 ssh-copy-id 分发秘钥
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.100.106
# 把 centos 7 的公钥复制到centos8(192.168.100.106) 中
复制成功后,会在centos8 中多了一个认证文件
[root@centos8-106 .ssh]# ll
total 16
-rw-------. 1 root root 398 Apr 21 09:23 authorized_keys # centos 7 中的公钥,后重命名的authorized_keys
-rw-------. 1 root root 2602 Apr 21 09:18 id_rsa
-rw-r--r--. 1 root root 570 Apr 21 09:18 id_rsa.pub
-rw-r--r--. 1 root root 177 Apr 21 08:03 known_hosts
注意
.shh 文件夹的权限为700
authorized_keys 的权限为600
,如果权限不为600
则无法登录
- 使用 scp分发秘钥
scp /root/.ssh/id_rsa.pub root@192.168.100.106:/root/.ssh/authorized_keys # 复制公钥到centos8 中
chmod 600 authorized_keys # 赋予600权限 (权限对应的数字: r=4 | w=2 | x=1 )
如果要实现一台本地服务器登录多台远程服务器,则把公钥给指定的所有远程服务器
如果要实现多台远程服务器登录一台本地服务器,则把私钥复制给指定的所有远程服务器。
二、Xshell 远程登录工具
当我们在虚拟机中使用centos时,会发现很多问题,比如无法复制内容到虚拟机中,字体太小,字体样式不好看,多台服务器时,不方便管理。此时我们可以安装xshell远程管理工具,有免费版我这里也提供连接。
下载xshell 7点击这里
xshell安装我就不写了,默认下一步直接安装就可以了。
1.打开软件,点击文件,新建
2.输入Centos的名称和IP地址,说明可以写也可以不写
3.点击创建好的通道进行连接
4.输入用户名和密码
点击接收和保存,把记住用户名、密码打钩。
确定后即可登录成功。
5.Xshell 工具介绍