Blog Home
Updated: 2023 Oct 09

一些常用命令

一般性命令

df -h #查看挂载设备和挂载点
fdisk -l #查看所有驱动器
lsblk -f #查看文件类型系统
dd if=file of=/dev/fd0 bs=512 conv=sync ; sync  #刻盘
diskutil list  #MacOS上的磁盘工具,该命令为打印磁盘列表
nvram -p  #MacOS上打印所有固件变量
gpasswd sudo -a username  #将普通用户添加到sudo群组
usermod -aG sudo $USER  #将用户添加到指定群组,这里的sudo是举例
sudo adduser username sudo #新增用户并添加到sudo群组
sudo update-alternatives --config editor #修改默认浏览器
netstat -lntp #显示服务端口
netstat -a -n | grep -i listen # MacOS查看服务端口
wrk #HTTP测试工具
ipef3 #测试网络带宽的工具
perf stat -r N -d #测量整条命令的运行时间,比time精确, 比如我们测试ls命令:perf stat -r N -d ls
ptrace #进程跟踪和调试
dtrace #动态跟踪编译器和跟踪实用程序
traceroute #链路追踪
mtr  #网络诊断工具
dig  #DNS工具
lsof -i:port  #查看占用端口
ssh online-machine "sudo tcpdump -s 0 -U -n -i eth0 not port 22 -w -" | wireshark -k -i -\n  #在本地捕获远端服务器数据包
luyten Java反编译
jad Java反编译
jd-gui Java反编译
jps -l Java process status
dd if=/dev/zero of=50M.txt bs=50m count=1 生成一个50M的文件
mkcert 生成本地证书
fd() {
  preview="git diff $@ --color=always -- {-1}"
  git diff $@ --name-only | fzf -m --ansi --preview $preview
}
fzf --preview 'bat {-1} --color=always'

Debian or Ubuntu source select

netselect
netselect-apt

使用ssh-keygen生成公私钥,并设置仅自己可读

ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
chmod 400 ~/.ssh/[KEY_FILENAME]

使用sshuttle代理

sshuttle --dns -vr admin@ip 0/0 --ssh-cmd 'ssh -i /path/to/.ssh/id_rsa'
sshuttle -r admin@ip 0/0 -e 'ssh -i /path/to/.ssh/id_rsa'

使用SSH代理

ssh -C -f -N -g -L 1080:10.65.33.82:8000 user@10.65.33.82 -i /path/to/.ssh/id_rsa
# ssh -C -f -N -g -L local_port:remote_host:remote_port user@remote_host
//将远程服务转发到本地,remote_host也可以为127.0.0.1,指的是远程主机的环回地址。
ssh -C -f -N -g -L 1080:10.65.33.72:8000 user@10.65.33.82 -i /path/to/.ssh/id_rsa
//ssh -C -f -N -g -L local_port:jump_host:remote_port user@remote_host
//将远程服务通过跳板机转发到本地,这样增加了数据访问的安全性,也就是说你是通过跳板机去访问远程服务的,便于隐匿自身(访问者)。
ssh -C -f -N -g -R 8000:localhost:80 user@10.65.33.82 -i /path/to/.ssh/id_rsa
# ssh -C -f -N -g -R remote_port:local_host:local_port user@remote_host
//将本地服务转发到远程, local_host为本机localhost或者127.0.0.1或者本地机器ip
ssh -C -f -N -g -R 8001:192.168.30.64:8000 user@10.65.33.82 -i /path/to/.ssh/id_rsa
//ssh -C -f -N -g -R remote_port:target_host:target_port user@remote_host
//将目标服务转发到远程, 这里我们将一个可以从本机访问的内容转发到远程主机,让远程主机也可以访问。和上面的区别,其实没有本质区别,本地服务也就是目标服务。但形式上,该行表示为将A机器上的服务通过本机B转发给另外一台C机器。
ssh -N -D 1080 user@10.65.33.82 -i /path/to/.ssh/id_rsa
//-N 参数必须放在-D前面,表示不执行远程命令,即不会登录到远程主机。

ssh -f -N -D 1080 user@10.65.33.82 -i /path/to/.ssh/id_rsa
//-f 参数表示在后台执行

ssh -C -f -N -D 1080 user@10.65.33.82 -i /path/to/.ssh/id_rsa
//-C 参数表示compression,即压缩传输所有数据

ssh -C -f -N -g -D 1080 user@10.65.33.82 -i /path/to/.ssh/id_rsa
//-g 参数表示允许远程主机连接本地转发端口,即设置为 0.0.0.0 上,从而使其他主机可以连接该代理。如果不加该参数,则默认绑定为127.0.0.1。

安全相关

unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0  #不记录history
python -c 'import pty; pty.spawn("/bin/sh")'  #使用交互shell
ssh -C -f -N -g -R local_port:localhost:remote_port user@remote_host  #将远程端口服务转发到本地端口
ssh -C -f -N -g -L local_port:localhost:remote_port user@remote_host  #将本地端口服务转发到远程端口
ssh -C -f -N -g -D local_port user@remote_host #动态端口转发,socks5代理

openssl

brew install openssl
openssl genrsa -out RegPrivateKey.pem 2048
openssl rsa -in RegPrivateKey.pem -pubout -out rpk

参考

Comments:

Email questions, comments, and corrections to hi@smartisan.dev.

Submissions may appear publicly on this website, unless requested otherwise in your email.