Linux网络指南
SSH指南
基本概念
SSH是1995年由芬兰学者Tatu Ylonen设计,用于计算机之间加密登录。
SSH功能:
- 加密 SSH Client 端至 SSH Server 端之间的通讯数据。
- 突破防火墙的限制完成一些之前无法建立的 TCP 连接。
公钥登录的原理:
- 远程主机发送随机字符串
- 本地主机用私钥加密发给远程
- 远程用公钥解密成功则允许登录
客户端常用配置:
# file: ~/.ssh/config Host * ControlMaster auto ControlPath ~/.ssh/%r@%h-%p ControlPersist yes # 启用长连接 Compression yes # 启用压缩,传输提升速度
长连接选项非常有用:
- 重复登录不需要反复输入密码
- 多个SSH连接共享同一个连接,如sftp、rsync、scp、git等
- 提升scp复制性能,不必每个文件单独认证
服务端常用配置:
# file: /etc/ssh/sshd_config PermitRootLogin yes # 支持root登录 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
高效传输
客户端zssh工具支持lrzsz传输文件,最大的好处是可在多次跳转之后直接传输文件。但需要在本地和远程都安装lrzsz工具。
zssh user@host # local to remote rz -be Ctrl-@ sz -be files # remote to local sz -be files Ctrl-@ rz -be
端口转发
ssh -CNTfgqn2 -D 1080 user@host
- -C
- 压缩数据传输
- -N
- 不执行SHELL
- -T
- 不分配伪终端
- -f
- 后台模式
- -g
- 允许打开的端口让远程主机访问
- -q
- 安静模式
- -n
- 配置stdin为/dev/null禁止从stdin读数据
- -2
- 使用v2版协议
- -L
- 本地端口转发
- -R
- 远程端口转发
- -D
- 动态端口转发
启用上面的动态端口转发后,可以用如下命令启动chrome实现穿透。
google-chrome --proxy-server="socks://127.0.0.1:1080"
通过ssh隧道访问gitlab方法:达到 host –> proxy –> gitlab 效果。
在host配置
~/.ssh/config
指定gitlab密钥Host localhost user git IdentityFile ~/.ssh/micky.key
启动本地转发
ssh -CNTfgqn2 -L 2222:gitlab.com:22 user@host
拉取仓库
ssh://git@localhost:2222/repo/name.git
参考资料
网络诊断
常用工具
ping
- -s packagesize
- 指定数据包大小,单位为字节,默认56B
- -i seconds
- 时间间隔
- -c count
- 次数
netstat
netstat # 显示当前建立的连接 netstat -nplt # 显示正在监听的TCP服务 netstat -npltux # 显示正在监听的TCP/UDP/UNIX服务 netstat -i # 显示所有网络接口
- -n
- 直接显示地址,不转换为名字
- -p
- 显示进程PID和名字
- -i
- 显示网络接口
- -l
- 只显示正在监听的连接
- -t
- 显示TCP连接
- -u
- 显示UDP连接
- -x
- 显示UNIX连接
- -a
- 显示所有连接