## SSH(secure shell)协议 单词含义 安全的外壳
SSH客户端<-------------------------->SSH服务器
数据传输是加密的,可以防止信息泄露;
数据传输是压缩的,可以提高传输速度。
域名
是IP地址的别名,方便记忆查询。
例如百度的ip地址为163.177.151.110 但输入域名www.baidu.com更方便
端口号
SSH服务器 端口 22
Web服务器 80
HTTPS服务器 443
FTP服务器 21 Windows用
ssh [-p port] user@remote ssh -p 22 Python@169.254.46.170
user 指在远程机器的用户名,默认为当前用户
remote 是远程机器的地址,可以是IP / 域名,或别名(下面有解析)
port 是SSH Server监听的端口,如果不指定,就为默认值 22
注意:
ssh 这个终端命令只能在Linux和Unix系统下使用
若要在Windows中使用,需下载安装PuTTY或者XShell客户端软件 www.xshellcn.com
退出用户连接 输入 exit 即可
##SCP (secure copy) 在Linux下远程拷贝文件
命令格式与SSH基本相同 但此处的 -P 必须是大写的
把本地当前目录下的01.py文件复制到远程家目录下的Desktop/01.py下
注意“:”后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py
反过来把远程家目录下的01.py文件复制到本地当前目录下的01.py
scp -P port user@remote:Desktop/01.py 01.py
加上 -r 可以传送文件夹
把当前目录下的demo文件夹复制到远程家目录下的Desktop
scp -P port -r demo user@remote:Desktop
反之亦然
scp -P port -r user@remote:Desktop/demo demo
注意:
scp同样只能在Linux和Unix下使用,在Windows下载PuTTy使用pscp命令同样功能,或安装
FileZilla使用FTP服务进行文件传输 端口为21
但以上每次登陆服务器或远程计算机都需要输入密码,所以配置密钥可以免密码登录
配置公钥
在.ssh目录下输入 ssh-keygen 即可生成钥匙,一路回车即可,会生成公钥私钥两个文件
上传公钥到服务器
执行 ssh-copy-id -p port user@remote 可以让远程服务器记住我们的公钥
id_rsa.pub 为公钥
id_rsa 为私钥 <----------------> authorized_keys
SSH客户端 SSH服务器
本地使用私钥对数据进行加密/解密
服务器使用公钥对数据进行加密/解密
##非对称加密算法:
使用公钥加密的数据,需要使用私钥解密;
使用私钥加密的数据,则需要使用公钥解密。
运行原理:
客户端使用私钥对数据进行加密 -> 通过网络将数据发送给服务器 -> 服务器使用公钥对接收到的数据进行解密 -> 服务器使用公钥对数据进行加密 -> 通过网络将数据发送给客户端 -> 客户端再使用私钥对数据进行解密
配置别名
因为每次输入ssh -p port user@remote: 会比较繁琐,因此将ssh 后面用别名代替
先在~/.ssh目录下创建config文件
touch config
在config文件中编辑以下内容
Host 别名名称
HostName 服务器IP地址即remote
User 服务器用户名
Port 端口
保存之后就可以用ssh 别名名称 代替了
例如 ssh myserver 等于 ssh -p port user@remote
#scp 使用同理 若要复制文件夹需加 -r 且别名后必须加“:”
例如 scp -r ~/Desktop myserver:~/Desktop/sources
用户 和 权限 的基本概念
读 read r 数字代号 4
写 write w 2
执行 excute x 1
一共十个字母 往后每三个字母一组区分看 意思为 “可读 可写 可执行”
第一个字母为“d”,表示为文件夹;若为“-”,表示为文件。
①对应用户的权限 ②对应组的权限 ③对应其他用户的权限
而③到用户中间的数字意思为 硬链接数
表示有多少种方式可以访问到当前目录/文件 简单理解为目录/文件夹总数 + 1
chmod的使用 增减权限
chmod +/- rwx 文件名/目录名
例如chmod +w 01.py chmod -rw 02.py
##在Mac终端不一样的用法
chmod 用户+操作+权限 文件
用户部分:使用字母 u 表示文件拥有者(user),g 表示拥有者所在群组(group),o 表示其他用户(other),a 表示全部用户(all,包含前面三种用户范围);
操作部分:“+” 符号表示增加权限,“-” 符号表示取消权限,“=” 符号表示赋值权限;
权限部分:“r” 符号表示可读(read),“w” 表示可写(write),“x” 表示可执行权限(execute);
文件部分:如不指定文件名,表示操作对象为当前目录下的所有文件。
例如 chmod g+w 123.txt chmod o-r,g+x 123.txt
#但测试过 u 无效 就是用户的权限修改不了
可以用数字方式修改,下拉有方法 例如 chmod 755 01.py
超级用户 root
root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限
sudo (substitute user) 表示使用另一个用户的身份
使用sudo命令表示使用了超级用户root的身份,但需要输入密码,每次有效期5分钟。
组管理
添加组/删除组 的命令都需要通过sudo执行
sudo groupadd 组名 添加组
sudo grouddel 组名 删除组
cat /etc/group 查看组信息 etc目录存放的大都是系统文件
chgrp -R 组名 目录/文件名 递归修改目录/文件的所属组
若没加sudo,会提示权限不够
用户管理
useradd -m -g 用户名 -m 自动建立用户家目录
-g 指定用户所在的组,否则会建立同名的组
passwd 用户名 设置密码,如果是普通用户,直接用passwd可以修改密码
userdel -r 用户名 删除用户, -r 会自动删除用户家目录
cat /etc/passwd | grep 用户名 查看用户信息
id 用户名 查看用户各种ID
使用useradd添加的用户,默认不在sudo组中,就是没有sudo权限。以下添加
usermod -G sudo 用户名
修改用户的主组 (passwd 中的 GID)
usermod -g 组 用户名
修改用户的附加组
usermod -G 组 用户名
修改用户登录 Shell
usermod -s /bin/bash
Which 查询命令所保存在的位置
例 which ls which useradd
/etc/passwd 用于保存用户信息的文件
/usr/bin/passwd 用于修改用户密码的程序
/bin (binary) 是二进制执行文件目录,主要用于具体应用
/sbin (system binary) 是系统管理员专用的二进制代码存放目录,主要用于系统管理
/usr/bin (user commands for applications) 后期安装的一些软件
/usr/sbin (super user commands for applications) 超级用户的一些管理程序
切换用户
su - 用户名 加“-”表示切换用户及目录,不加保留前用户目录
chown 修改拥有者
chgrp 修改组
chmod 修改权限
修改文件/目录的拥有者
chown 用户名 文件名/目录名
递归修改文件/目录的组 -R 表示递归
chgrp -R 组名 文件名/目录名
递归修改文件权限
chmod -R 755 文件名/目录名
“7”表示拥有者权限 “5”表示组权限 “5”其他用户权限
常见数字组合
777 -----> u=rwx,g=rwx,o=rwx
755 -----> u=rwx,g=rx,o=rx
644 -----> u=rw,g=r,o=r
例如 chmod 755 01.py
时间和日期
date 查看系统时间
cal calendar 查看日历,-y 选项可以查看一年的日历
磁盘信息
df -h disk free 显示磁盘剩余空间
du -h 目录名 disk usage显示目录下的文件大小
“-h” 以直观方式显示文件大小
进程信息
ps process status 查看进程的详细情况
ps aux 参数a,u,x ps a ps u
a显示终端上的所有进程,包括其他用户的进程
u显示进程的详细状态
x显示没有控制终端的进程
top 动态显示运行中的进程并且排序 退出按“q”
kill [-9]进程代号 终止指定代号的进程,-9表示强行终止
find命令
find 路径 -name "搜索条件" 若不输入路径,表示在当前目录搜索
例如 find Desktop/ -name "*.py"
软链接
ln -s 被链接的源文件 链接文件 类似Windows的快捷方式
必须带 -s ,否则建立的是硬链接文件
源文件要使用绝对路径,如果使用相对路径,一旦移动链接文件,无法使用
ln -s /Users/xuge/Desktop/01.py kuaijie_dakai
硬链接
相当于深复制与浅复制的概念
打包解包
windows 常用rar
Mac 常用zip
Linux 常用tar.gz
打包文件
tar -cvf 打包文件.tar 被打包的文件 例如 tar -cvf py.tar 01.py 02.py
解包文件
tar -xvf 打包文件.tar
参数c,v,f,x
c 生成档案文件,创建打包文件
v 列出归档解档的详细过程,显示进度
f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
x 解开档案文件
注意:f 选项必须放最后,其他随意
压缩/解压缩
gzip
tar与gzip命令结合使用可以实现文件 打包和压缩
① tar只负责打包不负责压缩
② 用gzip压缩tar打包后的文件,其扩展名一般为“xxx.tar.gz”
在Linux中最常见的压缩文件格式就是“xxx.tar.gz”
在打包解包时加一个参数“-z”,可以调用gzip,方便实现压缩与解压缩
压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件
解压缩文件
tar -zxvf 打包文件.tar.gz
解压缩到指定路径 -C
tar -zxvf 打包文件.tar.gz -C 目标路径
bzip2
用法与gzip一样,但扩展名不一样 xxx.tar.bz2
参数为 -j
tar -jcvf 打包文件.tar.bz2 被压缩的文件
tar -jxvf 打包文件.tar.bz2
APT
apt Advanced Packaging Tool 是Linux下的一款安装包管理工具
安装软件
sudo apt install 软件包
卸载软件
sudo apt remove 软件名
更新已安装的包
sudo apt upgrade