一些常用命令
一般性命令
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.