上传

上传文件:scp ~/data/file_name username@servername:/path
上传目录:scp -r ~/data/file_dir username@servername:/path

下载

下载文件:scp username@servername:/path/file_name /local_path
下载目录:scp -r username@servername:/path/file_dir /local_path

如果设置了别名,可以直接使用 scp ~/data/file_name alias:/path

ssh

ssh-keygen 命令

ssh-keygen 是命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥
语法

  1. ssh-keygen [options]
  1. -b:指定密钥长度;
  2. -e:读取openssh的私钥或者公钥文件;
  3. -C:添加注释;
  4. -f:指定用来保存密钥的文件名;
  5. -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
  6. -l:显示公钥文件的指纹数据;
  7. -N:提供一个新密语;
  8. -P:提供(旧)密语;
  9. -q:静默模式;
  10. -t:指定要创建的密钥类型。

ssh-agen 命令

ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add命令将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程

另外如果您的私钥使用密码短语来加密了的话,每一次使用 SSH 密钥对进行登录的时候,您都必须输入正确的密码短语。而 SSH agent 程序能够将您的已解密的私钥缓存起来,在需要的时候提供给您的 SSH 客户端。这样子,您就只需要将私钥加入 SSH agent 缓存的时候输入一次密码短语就可以了。这为您经常使用 SSH 连接提供了不少便利

ssh-add 命令

ssh-add命令是把专用密钥添加到 ssh-agent 的高速缓存中。该命令位置在/usr/bin/ssh-add
语法

  1. ssh-add [-cDdLlXx] [-t life] [file ...]
  2. ssh-add -s pkcs11
  3. ssh-add -e pkcs11

选项

  1. -D:删除ssh-agent中的所有密钥.
  2. -d:从ssh-agent中的删除密钥
  3. -e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙。
  4. -s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙。
  5. -L:显示ssh-agent中的公钥
  6. -l:显示ssh-agent中的密钥
  7. -t life:对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥
  8. -X:对ssh-agent进行解锁
  9. -x:对ssh-agent进行加锁

参考链接:https://www.jianshu.com/p/8e88d4b11dec

本地端口转发

ssh -L {localPort}:{targetHost:targetPort} {connectUser}@{connectHost}

localPort: 本地端口
targetHost:目标主机地址
targetPort:目标主机端口
connectUser:跳板主机用户
connectHost:跳板主机地址

示例:现有本地主机 serverA(10.0.0.1)一台跳板机 serverB(183.6.114.227:62002)跟一台装有mysql服务端的服务器 serverC(192.168.2.51)。serverA 想通过跳板机访问 51 服务器的 mysql 服务,命令如下:

  1. ssh -L 9000:192.168.2.53:3306 root@183.6.114.227 -p 62002

image.png

image.png

可以看到使用 ssh -L 开启隧道的时候,会开启一个 ssh 连接,当我们退出这个 ssh 会话的时候,连接也会退出。若只想开启一个 ssh 隧道,并不想开启连接,则可以增加 -N 参数

image.png

现在虽然添加了 -N 参数,但是执行完命令后,终端会卡住,此时当我们退出终端,隧道也会被关闭,这是因为隧道是在前台运行的。如果想让隧道在后台运行,还需要添加 -f 参数

  1. ssh -N -f -L 9000:192.168.2.53:3306 root@183.6.114.227 -p 62002

到这里又有一个问题,现在只能在 serverA 才能连上 serverC 服务器的 mysql 服务端,并不能通过别的主机访问 10.0.0.1:9000 端口访问 serverC 上的 mysql 服务。想实现该功能,只需在前面添加本机的 ip 即可

  1. ssh -N -f -L 10.0.0.1:9000:192.168.2.53:3306 root@183.6.114.227 -p 62002

如果还不够,希望 serverA 上的所有 IP 地址的 9000 端口都被监听,那么可以在建立隧道时开启网关功能,使用 -g 选项可以开启网关功能,开启网关功能后,serverA 上的所有 IP 都会监听对应端口

  1. ssh -g -N -f -L 10.0.0.1:9000:192.168.2.53:3306 root@183.6.114.227 -p 62002

动态端口转发

跟本地端口转发不同,动态端口转发不用指定要连接的目标服务器端口。而是将本地监听端口的请求转发到目标服务器对应端口

  1. ssh -D 127.0.0.1:9000 root@183.6.114.227 -p 62002

idea 配置代理
image.png

查看所有用户

cat /etc/passwd | cut -d “:” -f 1

tar

解压 :tar -zxvf xxx.tar.gz
压缩 :tar -zcvf xxx.tar.gz ./xdir

-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来! -f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!(比较不会忘记) -z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 .tar.gz -j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 .tar.bz2 -J :通过 xz 的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开,特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。 -c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename) -t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了; -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 其他后续练习会使用到的选项介绍: -p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;

—exclude=FILE:在压缩的过程中,不要将 FILE 打包!

将硬件时间写入系统时间

hwclock —hctosys

查看操作系统信息

  1. > uname -a
  2. Linux docker-lab 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
  3. > cat /etc/issue
  4. \S
  5. Kernel \r on an \m

image.png

shell 获取所有参数

  1. $1 获取第一个参数
  2. $@ 获取所有参数
  3. $? 获取上一条命令执行的结果 0:成功 1:失败
  4. $$ 获取当前任务的进程id(用于shell脚本里)

systemctl 管理系统服务

语法systemctl [命令] [服务]
常用参数:

  • start:启动服务
  • stop:停止服务
  • restart:重启服务
  • status:查看服务状态
  • enable:开启服务
  • disable:关闭服务
  • list -units --type=service:列出所有已启动的服务

示例:已防火墙服务为例

  1. $ systemctl status firewalld
  2. $ systemctl stop firewalld
  3. $ systemctl start firewalld