分类 SSH 下的文章

问题 | 安装Ubuntu server 之后,系统只识别了部分容量。


描述

安装Ubuntu server 22.04之后,df -h发现/挂载的地方大小只有98G,但是硬盘的大小是300G,一大部分都没识别出来。

解决办法

  1. 查看现有的卷组
sudo vgdisplay

屏幕截图 2024-01-09 113240.jpg

  1. 扩展现有的逻辑卷
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

注:注意一下后表的路基卷,跟你查看的挂载信息需要对应上。

屏幕截图 2024-01-09 113613.jpg

  1. 重新计算逻辑卷大小
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

屏幕截图 2024-01-09 113659.jpg

  1. 重新查看一下磁盘的挂载情况(需要3步重新计算才能生效)
df -h

屏幕截图 2024-01-09 113818.jpg


OpenSSH | 更新到最新版本修复CVE-2023-38408


描述

2023年7月19日,OpenSSH发布紧急安全补丁,解决OpenSSH ssh-agent转发中存在安全漏洞远程执行CVE-2023-38408。CVE-2023-38408是一个远程代码执行漏洞,位于 ssh-agent 的转发功能内,特别是涉及提供PKCS#11相关服务的情况下。在某些条件下,可以操纵ssh-agent对PKCS#11的支持,以便通过转发的代理套接字来促进远程代码执行。利用的先决条件包括受害者系统上存在特定库以及需要将代理转发到攻击者控制的系统。

解决办法

1 . 升级到OpenSSH 9.3p2或更高版本:升级到最新版本的OpenSSH至关重要,因为它包含缓解漏洞的关键补丁。确保所有相关系统和服务器及时更新至推荐版本或更高版本。

2 . 另外采取预防措施来避免被利用:

建议在仅仅OpenSSH用于远程主机管理的机器,通过Openssh配置(sshd_config)、防火墙,安全组ACL等限制来源访问IP为白名单仅可信IP地址,同时,非必要,关闭SSH代理转发功能,禁止在有关主机启用ssh隧道等。

关闭SSH代理转发功能方法为:
配置/etc/ssh/sshd_config
AllowTcpForwarding NO

本人选择了更新Openssh的版本(头硬)

这边是Centos7的系统,默认的Openssh版本是

准备工作(保证编译安装不正确情况下能正常连接服务器)

1 . 安装对应服务

yum install telnet* xinetd  # 安装telnet服务

2 . 配置xinetd
下面文件内容需要自己创建文件或者编辑

  • vim /etc/xinetd.d/telnet

service telnet
{

flags=REUSE
socket_type=stream
wait=no
user=root
server=/usr/sbin/in.telnetd
log_on_failure += USERID
disable= no

}

3 . 启动相关服务

# 设置服务开机自启及启动
systemctl enable xinetd.service
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start xinetd

# 设置防火墙放通telnet
firewall-cmd --zone=public --add-port=23/tcp --permanent
firewall-cmd --complete-reload

# 添加telnet用户(不能直接用root登录)
useradd telnet
passwd telnet

编译安装

1 . 使用telnet形式登录后su到管理员

2 . 下载源码解压

阿里云(官方推荐镜像站):https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
openssh-9.3p2源码下载地址

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz
tar -zxvf openssh-9.3p2.tar.gz
# 停止当前ssh服务
systemctl stop sshd

3 . 备份相关信息

# 备份当前ssh服务及配置
cp -a /etc/ssh /etc/ssh.bak
cp -a /usr/sbin/sshd /usr/sbin/sshd.bak
cp -a /usr/bin/ssh /usr/bin/ssh.bak
# 删除老配置
rm -rf /etc/ssh/*

# 卸载已安装的openssh相关软件包
rpm -e `rpm -qa | grep openssh` --nodeps

4 . 配置

#编译预配置
cd openssh-9.3p2 && ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-pam

configure.jpg

5 . 编译及安装

make
make install

这里编译安装会出现一些问题。提示Ubable to load host key "/etc/ssh/ssh_host_*_key": bad permission等文件权限的错误。
makeInstallError.jpg

问题解决办法:
直接重新给文件附上权限

chomd 0600 /etc/ssh/ssh_host_*_key

屏幕截图 2023-07-25 145132.jpg

6 . 启动

# 检查并删除老版本启动脚本
ls /usr/lib/systemd/system/ssh*
rm -f /usr/lib/systemd/system/ssh*

# 拷贝启动脚本
cp contrib/redhat/sshd.init /etc/init.d/sshd
# 拷贝sshd.pam配置文件
cp contrib/redhat/sshd.pam /etc/pam.d/

# 建立软连接
ln -s /usr/local/openssh/sbin/sshd /usr/sbin/# 若报错可将已存在的文件重命名,再执行软连接

systemctl daemon-reload

# 启动并设置开机自启动
systemctl start sshd && systemctl enable sshd
# 允许root远程登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# 启动ssh服务
systemctl start sshd
# 查看ssh服务状态
systemctl status sshd

启动ssh服务报错:

Starting sshd:/etc/rc.d/init.d/sshd: line 49: /usr/sbin/sshd: No such file or directory
Failed to start SYSV: Openssh server daemon.

解决办法:

cp -a /usr/local/openssh/sbin/sshd /usr/sbin/sshd

屏幕截图 2023-07-25 145211.jpg

7 . 准备战斗结束

# 删除telnt
systemctl stop telnet.socket
systemctl disable telnet.socket

#删除防火墙放行端口
firewall-cmd --remove-port=23/tcp --permanent
firewall-cmd --reload

# 启动ssh服务
systemctl start sshd

屏幕截图 2023-07-25 145242.jpg
屏幕截图 2023-07-26 105921.jpg


Ubuntu:安装zsh终端


一、安装zsh

sudo apt-get install zsh

二、安装 oh my zsh

git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

关于oh my zsh可以看如下的链接:https://ohmyz.sh/community.html
当然也可以通过

curl -L https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 

三、配置文件

3.1创建配置文件

cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

3.2设置zsh为默认的shell

chsh -s /bin/zsh

此时重新启动Ubuntu即可享受新的终端。

四、其他

4.1修改主题

可以去https://github.com/ohmyzsh/ohmyzsh/wiki/themes看看你喜欢什么主题,然后在.zshrc文件中进行更改。

4.2 自己写的一个主题

下载链接:ML.zip

主题截图:微信图片编辑_20220511211351.jpg

https://blog.csdn.net/yujia_666/article/details/115677068


SSH隧道技术


何谓SSH隧道

隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术。这里我们研究ssh隧道,所以所有的网络通讯都是加密的。又被称作端口转发,因为ssh隧道通常会绑定一个本地端口,所有发向这个端口端口的数据包,都会被加密并透明地传输到远端系统。

SSH隧道的类型

ssh隧道有3种类型:

动态端口转发(Socks 代理)
本地端口转发
远端端口转发

动态端口转发

动态端口允许通过配置一个本地端口,把通过隧道到数据转发到远端的所有地址。本地的应用程序需要使用Socks协议与本地端口通讯。此时SSH充当Socks代理服务器的角色。

命令格式

ssh -D [bind_address:]port

参数说明

bind_address 指定绑定的IP地址,默认情况会绑定在本地的回环地址(即127.0.0.1),如果空值或者为*会绑定本地所有的IP地址,如果希望绑定的端口仅供本机使用,可以指定为localhost。
port 指定本地绑定的端口

使用场景

假设X网络(192.168.18.0/24)有主机A(192.168.18.100),Y网络(192.168.2.0/24)有主机B(192.168.2.100)和主机C(192.168.2.101),已知主机A可以连接主机B,但无法连接主机C。

在主机A执行

$ ssh -D localhost:8080 root@192.168.2.100

然后主机A上的应用程序就可以通过

SOCKS5 localhost:8080

访问主机C上的服务。

优点

配置一个代理服务就可以访问远端机器和与其所在子网络的所有服务

缺点

应用程序需要额外配置SOCKS代理,若应用程序不支持代理配置则无法使用

本地端口转发

通过SSH隧道,将一个远端机器能够访问到的地址和端口,映射为一个本地的端口。
local_forwarding.jpg

命令格式

ssh -L [bind_address:]port:host:hostport

参数说明

bind_address 指定绑定的IP地址,默认情况会绑定在本地的回环地址(即127.0.0.1),如果空值或者为*会绑定本地所有的IP地址,如果希望绑定的端口仅供本机使用,可以指定为localhost。
port 指定本地绑定的端口
host 指定数据包转发目标地址的IP,如果目标主机和ssh server是同一台主机时该参数指定为localhost
host_port 指定数据包转发目标端口

使用场景

假设X网络(192.168.18.0/24)有主机A(192.168.18.100),Y网络(192.168.2.0/24)有主机B(192.168.2.100)和主机C(192.168.2.101),已知主机A可以连接主机B,但无法连接主机C。A主机需要访问C主机的VNC服务(5900端口)

在A主机上建立本地转发端口5901

$ ssh -L 5901:192.168.2.101:5900 root@192.168.2.100

然后本地vnc客户端通过5901端口打开c主机的vnc服务

$ open vnc://localhost:5901

优点

无需设置代理

缺点

每个服务都需要配置不同的端口转发

远端端口转发

远程端口转发用于某些单向阻隔的内网环境,比如说NAT,网络防火墙。在NAT设备之后的内网主机可以直接访问公网主机,但外网主机却无法访问内网主机的服务。如果内网主机向外网主机建立一个远程转发端口,就可以让外网主机通过该端口访问该内网主机的服务。可以把这个内网主机理解为“内应”和“开门者”。
remote_forwarding.jpg

命令格式

ssh -R [bind_address:]port:host:hostport

参数说明

bind_address 指定绑定的IP地址,默认情况会绑定在本地的回环地址(即127.0.0.1),如果空值或者为*会绑定本地所有的IP地址,如果希望绑定的端口仅供本机使用,可以指定为localhost。
port 指定本地绑定的端口
host 指定数据包转发源地址的IP,如果源主机和ssh server是同一台主机时该参数指定为localhost
host_port 指定数据包转发源端口

使用场景

假设X网络(192.168.18.0/24)有主机A(192.168.18.100),Y网络(192.168.2.0/24)有主机B(192.168.2.100)和主机C(192.168.2.101),已知主机A可以通过SSH访问登录B主机,但反向直接连接被禁止,主机B和主机C可以相互访问。若主机C想访问主机A的VNC服务(5900端口)。

在主机A执行如下命令,开放B主机远端端口转发。

$ ssh -R 5900:192.168.2.100:5901 root@192.168.2.100

然后主机C连接主机B的5901端口

$ open vnc://192.168.2.100:5901

优点

可以穿越防火墙和NAT设备

缺点

每个服务都需要配置不同的端口转发

如何禁止端口转发

设置ssh服务配置文件/etc/ssh/sshd_config

AllowTcpForwardingno


使用Chrome+SSH+Myentunnel配置浏览器ssh代理


Myentunnel下载地址:
外联下载
myentunnel_setup-3.6.1.rar

安装Myentunnel

SSH账号,服务器,密码进行填写。点击连接,开始链接SSH服务器。

20170322144316.png

Chrome安装Proxy SwitchySharp扩展工具。在【工具】-【扩展程序】中查看更多扩展程序,搜索SwitchySharp并进行安装。

20170322144749.png

设置完毕,点击“保存”按钮,关闭Proxy SwitchySharp设置页面,然后点击小地球使用代理。

20170322145000.png

最后Chrome可使用ssh服务器做代理上网。。。。。