Linux 准备工作/SSH远程连接/常用命令
一、Linux有什么作用:
- 商业服务器百分之90以上都是Linux系统。
- 开源软件都先支持Linux。
- 大数据分析、机器学习首选Linux。
- 整个互联网地基靠Linux撑起来。
二、准备工作:
-
查看IP:
-
[root@localhost ~]#
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever # 第一个是本机ip地址,也就是回环IP 不走网卡的 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:37:a8:09 brd ff:ff:ff:ff:ff:ff inet 192.168.65.32/22 brd 192.168.67.255 scope global noprefixroute dynamic ens33 valid_lft 506sec preferred_lft 506sec inet6 fe80::98e6:e7e9:dc3a:a3a/64 scope link noprefixroute valid_lft forever preferred_lft forever # 第二个是 192.168.65.32/22 外网IP地址 如果是内网IP地址的话,可以将虚拟机网络更改为桥接模式
-
如果该网络
ens33没有IP地址
怎么办?-
[root@localhost ~]#
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="42c1e011-fe4a-48c6-9f25-6d85590b0d34" DEVICE="ens33" ONBOOT="yes" # 把no 更改为yes
-
然后输入命令(将网络服务进行重启):
service network restart
-
-
安装
ifconfig
命令:-
yum install net-tools
-
安装完成后执行:[root@localhost ~]#
ifconfig
[root@localhost ~]# ifconfig br-53cc6a947569: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255 inet6 fe80::42:cbff:fe2b:1706 prefixlen 64 scopeid 0x20<link> ether 02:42:cb:2b:17:06 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 inet6 fe80::42:8eff:fe70:360d prefixlen 64 scopeid 0x20<link> ether 02:42:8e:70:36:0d txqueuelen 0 (Ethernet) RX packets 576 bytes 52753 (51.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 561 bytes 1459647 (1.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.65.32 netmask 255.255.252.0 broadcast 192.168.67.255 inet6 fe80::98e6:e7e9:dc3a:a3a prefixlen 64 scopeid 0x20<link> ether 00:0c:29:37:a8:09 txqueuelen 1000 (Ethernet) RX packets 1872693 bytes 642682737 (612.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 326324 bytes 27146858 (25.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 137 bytes 12605 (12.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 137 bytes 12605 (12.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vethe725d12: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::ac99:2bff:fe04:34b6 prefixlen 64 scopeid 0x20<link> ether ae:99:2b:04:34:b6 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 648 (648.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
-
-
-
替换默认源:
-
查看服务器的版本:[root@localhost ~]#
cat /etc/redhat-release
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) # 版本为7.5
-
安装wget命令:
yum install wget
-
开始替换163的源,因为下载、安装一些东西速度较快:
1.首先备份/etc/yum.repos.d/CentOS-Base.repo :
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.打开上面的网页:找到
下载对应版本repo文件
:cd /etc/yum.repos.d/ # cd 到这个目录中
3.下载repo文件,点击
centos7(通过上面命令查看centos版本)鼠标右键,点击复制链接地址
,然后回到终端执行:wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
4.运行下面命令生成缓存:
yum clean all yum makecache
-
安装Vim:
- 执行命令:
yum install vim
- 执行命令:
三、远程连接SSH:
3.1:认识SSH:
- SSH:英文全称Secure Shell
安全外壳协议
。 建立再应用层基础上的安全协议
。- 可靠,
专为远程登陆会话和其他网络服务提供安全性的协议
。 有效防止远程管理过程中的信息泄漏问题
。- SSH客户端适用于多种平台。
- SSH服务端几乎支持所有UNIX平台。
3.2:服务器安装SSH服务:
-
安装SSH:
yum install openssh-server
-
启动SSH:
service sshd start
-
设置开机运行:
chkconfig sshd on
-
查看ssh进程:
ps -ef | grep ssh
-
基本上界面化的操作系统都没有安装ssh。
3.3:客户端安装SSH工具:
-
Linux平台需要安装客户端软件:
yum install openssh-clients
-
Window可以搜索一些常用的软件,比如:Xshell。
3.4:客户端链接SSH服务:
-
进入黑窗口,进行下面操作:
ssh root[用户名]@192.168.1.8[公网IP地址]
The authenticity of host '192.168.1.8 (192.168.1.8)' can't be established. ECDSA key fingerprint is SHA256:kVeo07JOZKNIeBIQN30MFXCBLBFrCzb/6t9dGfUqU0g. Are you sure you want to continue connecting (yes/no)? yes # 输入yes
root@192.168.1.8's password: # 输入暗文的登陆密码,就OK了
3.5:SSH config 简介:
-
SSH config 语法关键字
:Host 别名 HostName 主机名[IP] Port 端口[默认22] User 用户名[root] IdentityFile 密钥文件的路径 -
通过再
~/.ssh/config
创建一个config文件:cd ~ # 进入家目录 mkdir .ssh # 创建隐藏文件夹 cd .ssh # 进入.ssh目录 touch config # 创建一个config文件
vim config # 用vim打开config文件 host "fe_cow" # 文件别名 HostName 192.168.1.8 # IP地址 User root # 用户名 Port 22 # 端口默认就是22 # 进行保存退出
执行命令:
ssh fe_cow[文件别名]
The authenticity of host '192.168.1.8 (192.168.1.8)' can't be established. ECDSA key fingerprint is SHA256:kVeo07JOZKNIeBIQN30MFXCBLBFrCzb/6t9dGfUqU0g. ECDSA key fingerprint is MD5:9c:38:f9:93:73:74:fb:cf:15:30:0b:e5:b4:97:ab:f9. Are you sure you want to continue connecting (yes/no)? yes # 填写yes Warning: Permanently added '192.168.1.8' (ECDSA) to the list of known hosts. root@192.168.1.8's password: # 输出暗文密码
也可以再config文件里配置多个远程链接服务器:
vim config # 用vim打开config文件 host "fe_cow" # 文件别名 HostName 192.168.1.8 # IP地址 User root # 用户名 Port 22 # 端口默认就是22 host "cu_cow" # 文件别名 HostName 192.169.1.3 # IP地址 User root # 用户名 Port 22 # 端口 # 进行保存退出 再终端执行: ssh cu_cow # 执行上面命令后,就会链接到文件别名为cu_cow的服务器上
3.6:SSH安全免密码登录:ssh key
-
ssh key 使用非对称加密方式生成公钥/私钥
-
私钥存放在本地~/.ssh目录
-
公钥可以对外公开,放在服务器的~/.ssh/authorized_keys(
存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
) -
Linux生成密钥的方式:
1.登录到Linux服务器,进入到~/.ssh目录中:
cd ~/.ssh
2.执行命令
ssh-keygen
:[root@localhost .ssh]# ssh-keygen # 执行生成密钥命令 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): fe_cow # 密钥的文件名 Enter passphrase (empty for no passphrase): # 这里我没有设置密码 Enter same passphrase again: # 没有设置密码 Your identification has been saved in fe_cow. Your public key has been saved in fe_cow.pub. The key fingerprint is: SHA256:/95IMeDY9MD8LFlnJJkY1n2cWXTBHn+/Ca5MEboiChI root@localhost.localdomain The key's randomart image is: +---[RSA 2048]----+ | o+.+o+O| | +. +o.=+| | *.. +.o| | =.O.o .o| |E S.=.* o| | . ....+ .| |.. . . ...o . o| |. . . . . oo + o | | . += . | +----[SHA256]-----+
3.查看当前目录中的生成密钥文件
ls -a
:[root@localhost .ssh]# ls -a . .. config fe_cow[是私钥] fe_cow.pub[后缀名.pub代表的是公钥] known_hosts
-
再Linux平台使用公钥与私钥,进行免密码登录:
1.登录服务器,进入.ssh目录(cd ~/.ssh/ )查看公钥文件
cat fe_cow.pub
:cat fe_cow.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYb2VqVd647SmfHrF/f7Thoj4tbU3ohKej3aOFBH2N1a35MH6ml6DTCsFW78we+X9RnFp4qOpr2WNKuX/6AFXulOrMUPryJ7fkGqTcEB8fD7/qZIhSNahCs4xh7O3g9D0W1EVJR9uxtVQ86nXrnbED8O1G93CN0cfHqtGC6jbRGRJ5rErdAb+b0qN5143udQEFGa+h4gj3dXi16QvkJEbYnYB4KuLagNmYLHH/Gml8EdDNLWFnC4lKbCMVXi5KocqhXQc7TkupCU13XpG8HuzBrkaWJYbc2YgEGIs0wCUhXQeOZLN0gbjH47g6SErioZuKTXVroHJKYCsd3o5tV root@localhost.localdomain
2.再当前目录创建authorized_keys文件,然后将公钥保存到authorized_keys文件中:
vim authorized_keys
3.接下来执行命令:
eval `ssh-agent`
ssh-add ~/.ssh/fe_cow # 将私钥进行添加到ssh
4.远程登录
ssh root@192.168.65.246
:可以发现已经不需要登录密码了。
3.7:SSH安全端口:
-
端口安全指的是尽量避免服务器的远程连接端口被不法分子知道,为此而
改变默认服务器端口号的操作
。 -
修改
/etc/ssh/sshd_config 配置
-
打开 sshd_config文件:
vim /etc/ssh/sshd_config .................... 8 # The strategy used for options in the default sshd_config shipped with 9 # OpenSSH is to specify options with their default value where 10 # possible, but leave them commented. Uncommented options override the 11 # default value. 12 13 # If you want to change the port on a SELinux system, you have to tell 14 # SELinux about this change. 15 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER 16 # 17 #Port 22 18 #AddressFamily any 19 #ListenAddress 0.0.0.0 20 #ListenAddress :: 21 HostKey /etc/ssh/ssh_host_rsa_key 22 #HostKey /etc/ssh/ssh_host_dsa_key 23 HostKey /etc/ssh/ssh_host_ecdsa_key 24 HostKey /etc/ssh/ssh_host_ed25519_key 25 26 # Ciphers and keying ....................................
-
将17行代码打开, 或者也可以监听两个端口,再增加一个Port 10010端口,保存后退出。
-
重新启动sshd配置文件:
service sshd restart
[root@localhost ~]# service sshd restart Redirecting to /bin/systemctl restart sshd.service
-
四、Linux常用命令:
4.1:软件操作命令:
- 软件包管理器:
yum
- 安装软件:
yum install xxx
- 卸载软件:
yum remove xxx
- 搜索软件:
yum serach xxx
- 清理缓存:
yum clean packages
- 列出已安装:
yum list
- 软件包信息:
yum info xxx
4.2:服务器硬件资源和磁盘操作:
-
内存:
free -m
[root@localhost ~]# free -m total used free shared buff/cache available Mem: 1821 610 183 25 1027 925 Swap: 2047 1 2046
-
硬盘:
df -h
[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 4.3G 13G 26% / devtmpfs 899M 0 899M 0% /dev tmpfs 911M 0 911M 0% /dev/shm tmpfs 911M 26M 886M 3% /run tmpfs 911M 0 911M 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot tmpfs 183M 0 183M 0% /run/user/0 overlay 17G 4.3G 13G 26% /var/lib/docker/overlay2/ddb654b92ae1ff55dbd2738f2a35dc62a48d8c9189025012909bd3cbf02cf326/merged shm 64M 0 64M 0% /var/lib/docker/containers/5ae1582f11bdbd3472fd2921784223bf560a8b16497ca7ed6ccfd90317ff1944/mounts/shm
-
负载:
w/top
[root@localhost ~]# w 09:46:21 up 2 days, 20:52, 2 users, load average: 0.00, 0.04, 0.06 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 021月19 7:01 5.06s 5.06s -bash root pts/0 192.168.67.214 09:39 5.00s 0.02s 0.00s w # load average: 0.00[表示最近一分钟的平均负载] 0.04[表示最近五分钟的平均负载] 0.06[表示最近十五分钟的平均负载] 当服务器大于0.6或大于0.7 就已经很危险
-
查看cup信息:
cat /proc/couinfo
[root@localhost ~]# cat /proc/cpuinfo processor : 0 # 逻辑处理器的ID vendor_id : GenuineIntel cpu family : 6 model : 142 model name : Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz stepping : 10 microcode : 0x96 cpu MHz : 1799.998 cache size : 6144 KB physical id : 0 # 物理封装的处理器ID siblings : 1 # 位于相同物理封装的处理器中的内核数量 core id : 0 # 每个核心的ID cpu cores : 1 # 位于相同物理封装的处理器中内核数量 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities bogomips : 3599.99 clflush size : 64 cache_alignment : 64 address sizes : 43 bits physical, 48 bits virtual power management:
4.3:文件和文件夹操作命令:
-
Linux 文件目录结构:
-
根目录:
/
-
家目录:
/hmoe
-
临时目录:
/tmp
-
配置文件:
/etc
-
用户程序目录:
/usr
-
图解:
-
-
文件操作基本命令:
命令 解释 ls =ls -al 查看目录下的文件 touch 新建文件 mkdir 新建文件夹 cd 进入目录 rm 删除文件和目录 cp 复制 mv 移动 pwd 显示路径 - 循环创建文件夹:
mkdir -p xxx[一级目录文件夹]/xxx[二级目录文件夹]/xxx[三级目录文件夹]
- 删除文件夹:
rm -r xxx[文件夹]
- 强制删除文件夹:
rm -rf xxx[文件夹]
- 循环创建文件夹:
4.4:系统用户操作命令:
命令 | 解释 |
---|---|
useradd | 添加用户 |
adduser | 添加用户 |
userdel | 删除用户 |
passwd | 设置密码 |
1.首先创建一个用户:useradd user_name[新创建用户名]
(新创建的用户名再/home/user_name目录下)
2.给新创建用户设置密码:passwd user_name
(连续输入两次密码)
3.删除该用户信息:userdel user_name[用户名]
drwx------. 2 1001[删除后组变成了1001表示已经找不到] 1001 62 3月 4 20:04 user_name
4.5:防火墙相关设置:
-
作用:保护服务器安全
-
设置防火墙规则:
- 开发80,22端口
-
关闭防火墙:
-
安装:
yum install firewalled
-
启动:
service firewalld start
-
重启:
service firewalld restart
-
检查状态:
service firewalld status
-
关闭或禁用防火墙:
service firewalld stop/disable
-
查看防火墙的区域:
firewall-cmd --get-zones
[root@localhost home]# firewall-cmd --get-zones block dmz drop external home internal public trusted work # 这些都是区域
-
查看防火墙默认区域:
firewall-cmd --get-default-zone
[root@localhost home]# firewall-cmd --get-default-zone public # 默认区域
-
查看防火墙每个区域配置的信息:
firewall-cmd --list-all-zone
4.6:提权操作sudo和文件传输操作:
-
提权:sudo
-
给一个用户增加操作权限:
visudo
96 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS 97 98 ## Allows people in group wheel to run all commands 99 %wheel ALL=(ALL) ALL 100 %user_name ALL=(ALL) ALL 101 ## Same thing without a password 102 # %wheel ALL=(ALL) NOPASSWD: ALL 103 104 ## Allows members of the users group to mount and unmount the 105 ## cdrom as root 106 # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
-
再第100行添加: %user_name[用户名字]
就可以了,再登陆user_name用户,可以进行操作权限。 -
user_name用户,操作的时候,前面一定要加
sudo
xxx[sudo 后面紧跟执行命令] 。
-
-
文件下载:
-
wget、curl
-
通过
wget命令进行下载
,举个栗子:wget http://www.baidu.com # 会发现当前文件夹中多出个index.html文件 -rw-rw-r--. 1 user_name user_name 2381 1月 23 2017 index.html
-
通过
cur命令进行下载
,举个栗子:curl -o baidu.html[下载文件名] http://www.baidu.com # 会发现当前文件夹中多出个baidu.html文件 -rw-rw-r--. 1 user_name user_name 2381 3月 4 20:46 baidu.html
-
-
文件上传:
- 将本地文件上传到服务器上:
- 语法:
scp txt_name.txt[文件名] root@192.169.66.06:/tmp/[用户名@IP地址:/远程服务器目录/]
- 登陆192.169.66.06服务器会发现,再tmp目录下, 有txt_name文件。
- 语法:
- 将从服务器上下载文件到本地:
- 语法:
scp root@192.169.66.06:/tmp/txt_name.txt[用户名@IP地址:/远程服务文件所在目录] ./[下载到本地当前 目录中]
- 查看本地当前目录,会发现从服务器中的tmp目录中,将txt_name.txt下载到了本地当前目录中。
- 语法:
- 将本地文件上传到服务器上: