Pinvon's Blog

所见, 所闻, 所思, 所想

Ubuntu 常用操作

tree 查看目录结构

sudo apt install tree
tree -L 4 pathname # -L指定层级

SSH

SSH能够自动加密和解密SSH客户端和服务器之间的网络数据; 如果工作环境中的防火墙限制了一些网络端口的使用, 但允许SSH连接, 那么也可以通过将TCP端口转发来使用SSH进行通讯. 总的来说, SSH端口转发能够提供两大功能:

  1. 加密SSH Client到SSH Server之间的通讯数据
  2. 突破防火墙的限制完成一些之前无法建立的TCP连接

基本用法

使用SSH远程登录

ssh pinvon@192.168.1.104

连接到目标主机的其他端口

默认情况下, SSH连接到目标主机的22端口上, 我们也可以指定其他的端口:

ssh -p 3000 pinvon@192.168.1.104

构建SSH密钥对

ssh-keygen -t rsa

寻找主机密钥

在准备添加密钥之前, 可以先检查是否已经添加对应主机的密钥:

ssh-keygen -F 192.168.1.104

删除主机密钥

ssh-keygen -R 192.168.1.104

绑定本地端口

SSH可以传送数据, 我们可以让那些不加密的网络连接, 全部改走SSH连接, 从而提高安全性.

如, 要让8080端口的数据, 全部通过SSH传向远程主机:

ssh -D 8080 pinvon@192.168.1.104

SSH会建立一个socket, 监听本地的8080端口(注意, 不是pinvon@192.168.1.104的8080端口). 一旦本地有数据传向8080端口, 就把它转移到SSH连接上, 发往pinvon@192.168.1.104

如果8080端口的数据原来未加密, 现在就会对其数据进行加密.

SSH隧道

命令格式:

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

场景: A和B无法互通, C可以同时连接A和B. 现在想通过C, 让A连接到B. 其中, A, B, C都是IP地址.

在A上执行:

ssh -L 2121:B:21 C

它的意思是, 指定SSH绑定本地端口2121, 然后指定C将所有的数据, 转发到B的21端口.

-L接受3个值, 格式为 本地端口:目标主机:目标主机端口.

只要连接A:2121, 就等于连接上了B:21

SSH反向连接

命令格式:

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

如, client连上server, 然后把client能访问的机器地址和端口镜像到server的端口上.

常用场景: 家里有一台电脑在内网, 外网的服务器无法连接访问到, 然后使用SSH反向连接, 打通一条隧道, 服务器就可以通过这条隧道进来了.

内网主机IP: 192.168.1.104, 外网主机IP: 123.207.62.191, 内网另一台主机IP: 192.168.1.100

让外网所有能访问到123.207.62.191的IP, 都能通过8080端口访问到192.16.1.100的80端口. #+BEGIN_SRC Shell ssh -R 123.207.62.191:8080:192.168.1.100:80 ubuntu@123.207.62.191

du 查看占用磁盘大小

du即disk usage

查看帮助:

du --help

-h 表示结果以K, M, G为单位, 提高信息的可读性:

du -h filename

如果只想看一个文件夹下所有文件的总和, 而不要看每个子文件的占用大小, 有两种办法, 一是使用-s参数, 二是指定最大深度为0

du -sh filename

# 或

du -h --max-depth=0 filename

screen 实现使用键盘在终端选中复制

sudo apt install screen

ctrl+a,[ 进入复制模式.

使用 vi 的按键模式进行光标移动.

将光标移动到复制的起始处, 回车.

将光标移动到复制的结束处, 回车.

ctrl+a,] 进行粘贴.

关闭 ssh 自动断开

编辑 /etc/ssh/sshd_config 文件:

ClientAliveInterval 30  # 客户端每隔 30 秒向服务发送一个心跳数据
ClientAliveCountMax 86400  # 客户端多长时间内没有响应, 服务器自动断连接

重启 sshd 服务:

service sshd restart

更改键盘映射

安装 gnome-tweak-tool, 在"键盘和鼠标"子菜单下, 可以修改自己想修改的键盘映射.

为了避免小拇指使用 ctrl 按键所带来的酸痛感, 可以交换 lctrl 和 lalt 两个按键.

windows 上的键盘映射修改, 可以参考: http://jixiuf.github.io/blog/windows-%E7%9A%84%E9%94%AE%E7%9B%98%E6%98%A0%E5%B0%84/

工作常用工具集锦

tar

不解压查看 tar.gz 内容

tar -tf xxx.tar.gz  # 查看文件列表(包含路径)
tar -tvf xxx.tar.gz | grep ^d  # 只查看目录结构

find

查找当前目录下 txt 和 pdf 文件

find . -name "*.txt" -o -name "*.pdf"

删除当前目录下的 .spec 文件

find . -name "*.spec" -delete

查找完成后执行命令

查找当前目录下所有的 .html.bak 文件, 然后拷贝到 dirname 目录下.

find . -name "*.html.bak" -exec cp {} dirname \;

注意最后面要加 \;, 否则会报错; 如果需要执行多个命令, 可以写多个 -exec, 每个 -exec 使用 \; 分隔.

grep

查找某目录下文件中包含 pinvon 的文件:

grep -r 'pinvon' dirname

全局替换某路径下的所有字符:

sed -i "s/old/new/g" `grep "old" -lr ./`

Comments

使用 Disqus 评论
comments powered by Disqus