博主上回大致讲解了文件系统,今天来说说 Linux 的网络信息,还是比较重要的~
临时修改
hostname node01
永久修改
vi /etc/hostname
window --> C:\Windows\System32\drivers\etc\hosts
123.56.xxx.xxx www.baidu.com
123.56.xxx.xxx www.taodao.com
vi /etc/hosts
将来我们需要把所有的虚拟机都配置hosts文件
192.168.100.101 node01
192.168.100.102 node02
ifconfig 查看当前网卡的配置信息 这个命令属于 net-tools 中的一个命令,但是 Centos7 中 minimal 版并没有集成这个包 所以7的时候需要自己手动安装 如果没有 ifconfig ,可以使用 ip addr 临时代替 netstat 查看当前网络的状态信息 一个机器默认有65536个端口号[0,65535] 这是一个逻辑的概念,将来我们需要使用程序监听指定的端口,等待别人的访问 一个端口只能被一个程序所监听, 端口已经被占用 netstat -anp netstat -r 核心路由表 == route ping 查看与目标 IP 地址是否能够连通 telnet 查看与目标 IP 的指定端口是否能够连通 yum install telnet -y telnet 192.168.31.44 22 curl restful 我们所有的资源在网络上中都有唯一的定位 那么我们可以通过这个唯一定位标识指定的资源 http://localhost:8080/lucky/user.action/666 curl -X GET http://www.baidu.com
接下来使用最初始的 Linux 虚拟机克隆一个完整虚拟机出来,现在服务器环境如下:
首先第一步要做的是生成密钥对,运行以下命令生成密钥对:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[root@node01 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa Generating public/private rsa key pair. 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:V61ce0q2+FB3Fu2xZOFo0hVxMFORgiyDIZpJmz9v/vg root@node01 The key's randomart image is: +---[RSA 2048]----+ | . . .o . . +OB| | . * .. o o.o+++| | * o..++*.| | . ooooo+| | o S . o =.*| | o . = *.| | o o o | | o . o | | ooE . | +----[SHA256]-----+
运行以上命令后会在 ~/.ssh/ 目录下生成一对密钥对。
[root@node01 ~]# ls ~/.ssh/ id_rsa id_rsa.pub known_hosts
接下来,你想免秘钥登录谁,只需要把自己的公钥传递给对方主机即可。这个公钥文件必须放在对方主机的 ~/.ssh/authorized_keys 文件中。可以使用命令将公钥文件自动传递过去,命令如下:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.102ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.102
[root@node01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.102 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.100.102 (192.168.100.102)' can't be established. ECDSA key fingerprint is SHA256:U4EWd869KRKqbW0b2wROWkc7+i+dBW3WHgy+IILYDMI. ECDSA key fingerprint is MD5:99:5a:c0:d8:e4:ec:73:fe:3c:f5:c0:b6:14:7f:d4:0f. 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@192.168.100.102's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.100.102'" and check to make sure that only the key(s) you wanted were added.
注意:第一次建立连接时会弹出一个警告,需要输入 yes 将该主机添加到当前设备的已知主机列表中。这个警告是可 以忽略的,一会我们讲如何忽略。
查看对方主机的 ~/.ssh/authorized_keys 文件如下:
[root@node02 ~]# cat ~/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOENHCwG21/zMYmSZtY/QbDpMS5coPcvhlEkmzTEXzi5PMx30qYZRaClsp9C8z7Qa0t3IFKe qp3+g0ZdGYkqEUmCYqwQH9ESnEuHaKKzM04YlfYFV7m9uqtmaOwCfSXJ5bEFKqP5/xBT5MsplK4KYgS4MjS1zQO0EDo19HJauG/9gF YwjBaMOqdsBN2qqjzOOXpDhgXgeY1NQjw9l7yd4P/EE/K9vzFi8T9ssQTBaf9hNRtVKq4cyddfyQ9p0OZVARRo+h2TDyzb4jOyApAD 3aGCBO2wiXuW98mMwGCVy+xELM2FiDpIYZi0MKcwWcXsSMaKqHBuOpIYcjZgRlYboz root@node01
传输文件测试是否已免密:
[root@node01 ~]# scp /etc/profile root@192.168.100.102:~ profile 100% 1819 2.0MB/s 00:00
通过测试发现已无需输入密码即可进行文件传输,至此,免密流程结束。注意:免密操作是单方面的,如果希望 node02 操作 node01 也免密的话,需要将上述流程在 node02 机器上也做一次。
现在我们已经与 192.168.100.102 机器实现了免秘钥,但是每次都要输入 IP 属实有些麻烦,还好之前我们在 /etc/hosts 文件中已经添加了对应 IP 域名的映射,如下:
192.168.100.101 node01 192.168.100.102 node02
那么我们以后便可以使用如下方式来进行通信:
[root@node01 ~]# ssh root@node02 The authenticity of host 'node02 (192.168.100.102)' can't be established. ECDSA key fingerprint is SHA256:U4EWd869KRKqbW0b2wROWkc7+i+dBW3WHgy+IILYDMI. ECDSA key fingerprint is MD5:99:5a:c0:d8:e4:ec:73:fe:3c:f5:c0:b6:14:7f:d4:0f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'node02' (ECDSA) to the list of known hosts. Last login: Tue May 3 17:37:48 2022 from 192.168.100.1
虽然这次没有要求输入密码,但是烦人的提示信息又出现了。也不是说多敲一个 yes 有多累人,只是后期我们可能会 使用脚本登入其他机器执行一些命令,这时候这个提示信息就会卡住脚本的执行,所以我们必须将其处理。
解决方法:本次生效。
ssh -o StrictHostKeyChecking=no root@node01
解决方案:永久生效。
修改 /etc/ssh/ssh_config 文件的配置,在 Host * 节点下配置以下信息:
# 严格的密钥检查 no StrictHostKeyChecking no # 已知主机列表文件信息写入黑洞(不会再生成 known_hosts 文件) UserKnownHostsFile /dev/null
这样以后再也不会弹出将该主机添加到当前设备的已知主机列表中的提示信息了。
恰恰是梦想实现的可能性,让我们的生活变得有趣。